The following table is an amalgamation of a cut down version of CUSTOMER
and INVOICEITEM
tables from the INVOICE
database. It has some serious design issues:
CustABN | CustName | CustAddress | CustSuburb | InvoiceNo | InvDate | ItemNo | ItemDesc | ItemPrice | Quantity |
---|---|---|---|---|---|---|---|---|---|
31002054803 | Mellow Yellow Lighting | 546 Mountain Highway | Pokolbin | 3 | 16-Sept-2004 | 1300-2202 | Wide Screen | $455.00 | 4 |
31002054803 | Mellow Yellow Lighting | 546 Mountain Highway | Pokolbin | 3 | 16-Sept-2004 | 1200-2236 | FrostFreeze Deluxe | $523.00 | 5 |
31002054803 | Mellow Yellow Lighting | 546 Mountain Highway | Pokolbin | 4 | 6-Oct-2004 | 1200-2236 | FrostFreeze Deluxe | $523.00 | 3 |
15234556678 | Victor Panels | 56a Beatrice St | Cannon Hill | 5 | 13-Apr-2005 | 1500-2100 | SpinWash | $760.00 | 3 |
For example, what happens in each of the following situations?
Jot down your ideas.
1. A new customer, say Genna Bear, needs to be added.
Genna Bear cannot be sensibly added without an invoice. The database has no "easy" way to record the new customer's details. This is an insertion anomaly.
2. Mellow Yellow Lighting moves to a new location
The CustAddress
and CustSuburb
fields for each of the Mellow Yellow Lighting rows needs to be updated. If by accident only some of the rows updated then the database will be inconsistent. Two different addresses will be recorded, which is the correct address? This is a modification anomaly.
3. Invoice number 5 was a mistake and needs to be removed from the database
If invoice number 5 is deleted, the details for Victor Panels will be lost. This is a deletion anomaly.
4. Consider why none of these problems arise in the original INVOICE
database.
None of these problems arise in the original INVOICE
database because it is properly designed. In particular unlike the sample table given here, in the INVOICE
database there is no redundancy.