Re: 4NF and 5NF

From: Neo <neo55592_at_hotmail.com>
Date: 5 Jan 2005 07:54:48 -0800
Message-ID: <1104940488.918072.284480_at_c13g2000cwb.googlegroups.com>


> HouseNotes
> buyer     seller    lender
> ==================================
> Smith     Jones     National Bank
> Smith     Wilson    Home Bank
> Nelson    Jones     Home Bank

Script below shows an alternate solution using an eXperimental Db:

// Create persons

CREATE *person.item ~in = dir;
CREATE *smith.cls = person;
CREATE *nelson.cls = person;
CREATE *jones.cls = person;
CREATE *wilson.cls = person;

// Create buyers

CREATE *buyer.item ~in = dir;
CREATE smith.cls = buyer;
CREATE nelson.cls = buyer;

// Create sellers

CREATE *seller.item ~in = dir;
CREATE jones.cls = seller;
CREATE wilson.cls = seller;

// Create banks

CREATE *bank.item ~in = dir;
CREATE *national bank.cls = bank;
CREATE *home bank.cls = bank;

// Create lenders

CREATE *lender.item ~in = dir;
CREATE national bank.cls = lender;
CREATE home bank.cls = lender;

// Create house notes

CREATE *house note.item ~in = dir;

// Create 1st note

CREATE *;

CREATE it.cls = house note;
CREATE it.buyer = smith;
CREATE it.seller = jones;
CREATE it.lender = national bank;

// Create 2nd note

CREATE *;

CREATE it.cls = house note;
CREATE it.buyer = smith;
CREATE it.seller = wilson;
CREATE it.lender = home bank;

// Create 3rd note

CREATE *;

CREATE it.cls = (%.name=house note & %.item~in=dir);
CREATE it.buyer = (%.name=nelson & %.cls=buyer);
CREATE it.seller = (%.name=jones & %.cls=seller);
CREATE it.lender = (%.name=home bank & %.cls=lender);

// Find a note where buyer is smith,
// seller is wilson and lender is home bank.
// Finds 2nd house note.

SELECT %.cls=house note & %.buyer=smith & %.seller=wilson & %.lender=home bank; Received on Wed Jan 05 2005 - 16:54:48 CET

Original text of this message