Jump to content

IBM Business System 12

From Alfawiki
Adapted from the English Wikipedia article IBM Business System 12, available under CC BY-SA 4.0Updated 9 August 2025
Business System 12 (BS12)
Company typeProprietary software
IndustryDatabase management systems
Founded1978
Defunct1985
Headquarters
Uithoorn
,
Netherlands
ProductsRelational database management system
ParentIBM

Business System 12, commonly referred to as BS12, ranks among the earliest fully relational database management systems. It was created by IBM's Bureau Service branch at their international development facility located in Uithoorn, Netherlands. Development work started in 1978, culminating in its initial release in 1982. Despite its innovations, BS12 experienced limited market penetration and gradually disappeared following the closure of the division in 1985, as IBM and other vendors converged on SQL as the standard.

A significant innovation of BS12 was its query language, derived from ISBL, which originated at IBM’s UK Scientific Centre. Although IBM’s US-based System R team provided consultation, BS12 deliberately chose not to adopt SQL, deeming it flawed and cumbersome during that period.

The system incorporated sophisticated features that were rare among SQL-based databases at the time. This was influenced by ISBL and intentional architectural decisions. Notably, views could be parameterized with TABLE-type parameters, enabling views to function as novel relational operators—such as implementing Codd’s DIVIDE operator.

Additionally, BS12 allowed modifications to catalog tables, which store metadata about the database structure. Creating new tables was possible by inserting records into the TABLES catalog, while adding columns was achieved through inserts into COLUMNS.

Preceding widespread SQL adoption, BS12 featured user-defined functions and procedures within a Turing complete sublanguage, supported triggers, and offered a straightforward "call" interface for application integration—all available from its 1982 launch.

Example

An example query to find departments where salary expenditures surpass budgets:

T1 = SUMMARY(EMP, GROUP(DEPTNUM), EMPS=COUNT, SALSUM=SUM(SALARY))
T2 = JOIN(T1, DEPT) 
T3 = SELECT(T2, SALSUM > BUDGET)

This example performs a "natural join" on the shared column DEPTNUM. While some variants of SQL provide natural join capabilities, this case uses an explicit join for clarity. The equivalent SQL statement is:

<syntaxhighlight lang="sql"> -- SQL equivalent SELECT d.Deptnum, COUNT(*) AS Emps,

 SUM(e.Salary) AS Salsum, Budget

FROM Emp e JOIN Dept d ON e.Deptnum = d.Deptnum GROUP BY d.Deptnum, Budget HAVING SUM(e.Salary) > Budget </syntaxhighlight>

External links