Re: assigning codes to events
Date: Wed, 19 Jun 2002 11:22:45 +0100
Message-ID: <aepm9o$su8$1_at_sp15at20.hursley.ibm.com>
I can see at least the following Problems with both designs
Not 1NF Can't hold letters in progress Hasn't got Delivery Date Hasn't got Returned Date A Letter can't be Returned because of No Address AND No Postage
This would be my first stab
Letters (L)
LetterID DateSent
--------- ----------
1 5-15-2002 2 5-16-2002 3 5-17-2002 4 5-17-2002 5 5-18-2002
Letters_Delivered (D)
LetterID DateDelivered
--------- ----------
1 5-18-2002 2 5-17-2002
Letters_Lost_View
SELECT LetterID FROM Letters
WHERE Current Date - DateSent > 15 Days
EXCEPT SELECT LetterID FROM Letters_Delivered
EXCEPT SELECT LetterID FROM Letters_ReturnedToSender
Letters_ReturnedToSender (R)
LetterID DateReturned Sufficent_Postage Address_Known
--------- ------------ ----------------- ---------------
4 5-17-2002 0 1 5 5-18-2002 1 0
(I note the booleans above might not be sufficient. E.g. 0 = False, 1 = True, 2 = Not Known)
Add then you need some constraints (of course)
NOT EXISTS (SELECT LetterID FROM R INTERSECT SELECT LetterID FROM D) NOT EXISTS (SELECT LetterID FROM R EXCEPT SELECT LetterID FROM L) NOT EXISTS (SELECT LetterID FROM D EXCEPT SELECT LetterID FROM L) NOT EXISTS (SELECT LetterID FROM D NATURAL JOIN L WHERE DateDelivered < DateSent FROM D, L) NOT EXISTS (SELECT LetterID FROM R NATURAL JOIN L WHERE DateReturned < DateSent ) NOT EXISTS (SELECT LetterID FROM R WHERE Sufficent_Postage = 1 AND Address_Known = 1 )
Now that's a little better
Regards
Paul Vernon
Business Intelligence, IBM Global Services
Received on Wed Jun 19 2002 - 12:22:45 CEST