- IBM Business System 12
Business System 12, or simply BS12, was one of the first fully
relational database management system s, designed and implemented by IBM's "Bureau Service" subsidiary at the company's international development centre inUithoorn ,The Netherlands . Programming started in1978 and the first version was delivered in1982 . It was never widely used and essentially disappeared soon after the division was shut down in1985 , possibly because IBM and other companies settled onSQL as the standard.BS12's lasting contribution to history was the use of a new query language based on
ISBL , created at IBM's UK "Scientific Centre". Developers of the famousSystem R underway in the US at the same time were also consulted on certain matters concerning the engine, but the BS12 team rejectedSQL unequivocally, being convinced that this apparently unsound and difficult-to-use language (which at that time was also relationally incomplete) would never catch on.BS12 included a number of interesting features that still have yet to appear on SQL-based systems, some a consequence of following the ISBL precedent, others due to deliberate design. For instance, a view could be parameterised and
parameter s could be of type TABLE. Thus, a view could in effect be a newrelational operator defined in terms of the existing operators.Codd 'sDIVIDE operator was in fact implemented that way.Another feature that could have easily been included in SQL systems was the support for update operations on the catalog tables (system tables describing the structure of the database, as in SQL). A new table could be created by inserting a row into the
TABLES
catalog, and then columns added to it by inserting intoCOLUMNS
.In addition, BS12 was way ahead of SQL in supporting user-defined functions and procedures using a
computationally complete sublanguage,triggers , and a simple "call" interface for use by application programs, all in its very first release in1982 .Example
Sample query from [http://www.mcjones.org/System_R/bs12.html BS12 article on System R website] for determining which departments are over their salary budgets:
T1 = SUMMARY(EMP, GROUP(DEPTNUM), EMPS=COUNT, SALSUM=SUM(SALARY)) T2 = JOIN(T1, DEPT) T3 = SELECT(T2, SALSUM > BUDGET)
Note the "natural join" on the common column, "DEPTNUM". Here is the equivalent SQL for comparison:
-- (SQL Version) SELECT d.Deptnum, Count(*) as Emps, Sum(e.Salary) as Salsum FROM Emp as e JOIN Dept as d ON e.Deptnum = d.Deptnum HAVING Sum(e.Salary) > d.Budget
ee also
*
The Third Manifesto (a refinement of the ideas that guided BS12)
*D (data language specification) (a successor of BS12's query language)External links
* [http://www.mcjones.org/System_R/bs12.html Business System 12 (BS12)]
* [http://www.c2.com/cgi/wiki?TopsQueryLanguage TQL - A draft query language influenced by BS12]
Wikimedia Foundation. 2010.