Hugh Darwen <[email protected]>
IBM United Kingdom Limited (retired 2004)
The planning of BS12 started in 1978, with a decision that the new state-of-the-art DBMS for IBM's Bureau Service would be a relational one, but the design and implementation took another four years. It became available to customers in 1982, at least two years after Oracle and SQL/DS. Although the Bureau Service died in about 1985, I am pretty sure one internationally available BS12 service is still running in The Netherlands. (IBM's US subsidiary, Service Bureau Corporation developed some pre-relational dbms software in the early sixties. When SBC was sold to CDC under consent decree litigation, the business carried on in EMEA and AFE, and we inherited that software. I worked for the small lab that made that dbms software into a deliverable. Business System 12 was its supersedent.)
We were influenced by System R people, but only on engine stuff and not in any matters to do with language design. Jim Gray, Bruce Lindsay and Ron Fagin (all at Almaden Research Center, though I'm not sure Ron was on the System R team) were all consulted.
For our language design, we consulted the folks at the UK Scientific Centre, who had developed the first ever relational language, ISBL, which they implemented in the single-user system that nobody claimed to be a DBMS, PRTV (Peterlee Relational Test Vehicle).
BS12's query language had the same operators as ISBL (and more) but not ISBL's infix syntax with operator symbols like *. Instead, BS12 used prefix syntax with key word operators. Thus, ISBL's R*S was JOIN(R,S) in BS12.
My words in response to the executive manager who asked me why we had rejected SQL in favour of relational algebra still haunt me: "Yes, we looked at System R too, but we found its language to be incomplete, unfriendly, unsound and unfaithful to Codd's Relational Model--take my word for it, it'll never catch on."
No BS12 table ever contained more than one occurrence of the same row. We did nearly fall into the "nulls" trap, but thankfully veered away from it at the last minute, under advice from Chris Date, Stephen Todd (of the ISBL team) and, wait for it ... System R's Bruce Lindsay!
Because BS12 spurned duplicate rows, it was obliged to make "duplicate removal avoidance" a strong feature of its optimiser--something that SQL implementations are only now beginning to catch up with (in SQL terms, this means not always firing up the duplicate elimination mechanism just because the user said DISTINCT--you might be able instead to prove that there cannot be any duplicates).
Off the top of my head, here is a list of interesting features in BS12:
In fact, every table, base or derived, had a primary key, as the system did its level best to compute candidate keys of query results and arbitrate among them if it found more than one.
[DEFINE] T1 = JOIN(EMP, DEPT) T2 = SUMMARY(T1, GROUP(DEPTNUM), EMPS=COUNT, SALSUM=SUM(SALARY)) T3 = SELECT(T2, SALSUM > BUDGET) etc.
What's more, if you liked the query you had developed, you could preserve it as a view definition with
KEEP <definition name> AS <view name>
I'm afraid nobody got around to publishing any papers on BS12, as far as I know. It was developed by about 20 people in a small shop where publication of papers wasn't encouraged. I have some manuals, hardcopy only, squirreled away in a cupboard at IBM.
H. Darwen and C.J. Date. "The Third Manifesto" SIGMOD Record 24, 1 (March 1995), pages 39-49. PostScript
A hardcopy draft of version 2, including a paper on inheritance can be obtained from <[email protected]>.
S. J. P. Todd. "The Peterlee Relational Test Vehicle--A System Overview" IBM Systems Journal 15, 4 (1976) pages 285-308.
P. A. V. Hall, P. Hitchcock, and S. J. P. Todd. "An Algebra of Relations for Machine Computation" Conference Record of the Second ACM Symposium on Principles of Programming Languages Palo Alto, California (January 1975), pages 225-232.