Re: Principle of Orthogonal Design

From: TroyK <cs_troyk_at_juno.com>
Date: Wed, 9 Jan 2008 13:01:02 -0800 (PST)
Message-ID: <9bfe073a-548d-4575-90e9-ab2823f9f247_at_d70g2000hsb.googlegroups.com>


On Jan 8, 6:51 pm, JOG <j..._at_cs.nott.ac.uk> wrote:
> I was wondering what your current stances towards the principle of
> current design is cdt - info about the POOD is actually pretty sparse
> on google, which has not helped my own understanding. I gather that
> Date has realigned his opinion - although what to I know not - and
> that Darwen rejected the original POOD paper outright given that
> McGovern posits that:
>
> R1 { X INTEGER, Y INTEGER }
> R2 { A INTEGER, B INTEGER }
>
> violates the principle, whatever the relations' attribute names.
> Instinctively it does seem rather odd that a predicates such as:
>
> * on Day:X the shop had noCustomers:Y
> * on Roll:A, the dice showed the Number:B
>
> cannot share the same database. Have I interpreted the debate
> correctly? Any insights or corrections are, as ever, appreciated -
> POOD is certainly thought provoking, and the concept that an update
> need not require specifcation of a table name is an interesting one.

I thought I'd work up an example that illustrates part of McGovern's argument (as I understand it). Comments and corrections are most welcome:

Assuming we want to represent employees and their status as either salaried, commissioned, or both, we might come up with the following design (assuming the most obvious interpretations):

Table: Emp
Emp# IsSalaried IsCommissioned
==== ---------- --------------

1     Y           N
2     N           Y
3     Y           Y


Another possible design could be:
Table: Emp
Emp#



1
2
3

Table: SalariedEmp (FK, Emp# references Emp.Emp#) Emp#



1
3

Table: CommissionedEmp (FK, Emp# references Emp.Emp#) Emp#



2
3

Although we can derive the same information from each design, the former is to be prefered because the latter violates POOD (two tables with identical headers, even semantically speaking). Additionally, it requires that we inspect the tables' names in order to gather the full meaning of the propositions.

TroyK Received on Wed Jan 09 2008 - 22:01:02 CET

Original text of this message