relational database systems
DESCRIPTION
Relational Database Systems. Bit and Bobs Worked Example. Normalisation. Un-normalised Form (UNF). Identify an entity List all the attributes Identify a key. Un-normalised Form (UNF). Identify repeating data items. Un-normalised Form (UNF). Identify repeating data items. - PowerPoint PPT PresentationTRANSCRIPT
Relational Database Systems
Bit and Bobs Worked Example
Normalisation
Un-normalised Form (UNF) Identify an entity List all the
attributes Identify a key
ORDER
(Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone NumberItem CodeDescriptionUnit CostQuantity)
Un-normalised Form (UNF)
Identify repeating data items
Un-normalised Form (UNF) Identify repeating
data items
ORDER (Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number
Repeating itemsItem CodeDescriptionUnit CostQuantity)
First Normal Form (1NF) Remove
repeating data items to form a new entity
Take the key with you!
ORDER (Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number
Repeating itemsItem CodeDescriptionUnit CostQuantity)
First Normal Form (1NF) Remove
repeating data items to form a new entity
Take the key with you!
ORDER
ORDER_ITEM
(Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number)
(Order NumberItem CodeDescriptionUnit CostQuantity)
First Normal Form (1NF) Identify a key for
the new entity It will be a
compound key Use the original
key and add to it
ORDER
ORDER_ITEM
(Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number)
(Order NumberItem CodeDescriptionUnit CostQuantity)
First Normal Form (1NF) Identify a key for
the new entity It will be a
compound key Use the original
key and add to it Label the foreign
key Order Number is
both part of the compound primary key and also a foreign key.
ORDER
ORDER_ITEM
(Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number)
(*Order NumberItem CodeDescriptionUnit CostQuantity)
First Normal Form (1NF) A data model is
in 1NF if it has no multi-valued attributes
ORDER
ORDER_ITEM
(Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number)
(*Order NumberItem CodeDescriptionUnit CostQuantity)
First Normal Form (1NF)
First Normal Form (1NF)
But what if there were lots of orders for large deluxe red widgets…?
There are still update anomalies
Second Normal Form (2NF) Examine any entity
with a compound key (in this case ORDER_ITEM)
See if any attributes are dependent on just one part of the compound key
These are called partial dependencies
ORDER
ORDER_ITEM
(Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number)
(*Order NumberItem CodeDescriptionUnit CostQuantity)
Second Normal Form (2NF) Order Number is part
of the key Item Code is part of
the key Description is
dependent on the Item Code
Unit Cost is dependent on the Item Code
Quantity is dependent on both Order Number and Item Code.
ORDER
ORDER_ITEM
(Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number)
(*Order NumberItem CodeDescriptionUnit CostQuantity)
Second Normal Form (2NF) Description and Unit
Cost are partial dependencies
They are dependent on Item Code
Remove these attributes to a new entity
Take a copy of the attribute they are dependent on
ORDER
ORDER_ITEM
(Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number)
(*Order NumberItem CodeDescriptionUnit CostQuantity)
Second Normal Form (2NF) Item Code
becomes the key of the new entity
And becomes a foreign key in ORDER-ITEM
ORDER
ORDER_ITEM
ITEM
(Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number)
(*Order Number*Item CodeQuantity)
(Item CodeDescriptionUnit Cost)
Second Normal Form (2NF) A data model is in
2NF if it is in 1NF and there are no partial dependencies
ORDER
ORDER_ITEM
ITEM
(Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number)
(*Order Number*Item CodeQuantity)
(Item CodeDescriptionUnit Cost)
Second Normal Form (2NF)
We can add an item to the Item table without it having to be on an order
We can delete an order in the Order table without deleting details of the items on the order
We can update item details once in the Item table without affecting the orders for that item in the Order-Item table
Second Normal Form (2NF) But there are still
update anomalies with the Order entity
ORDER (Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number)
Third Normal Form (3NF) Examine all the
entities produced so far
See if there are any non-key attributes which are dependent on any other non-key attributes
These are called non-key dependencies
ORDER
ORDER_ITEM
ITEM
(Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number)
(*Order Number*Item CodeQuantity)
(Item CodeDescriptionUnit Cost)
Third Normal Form (3NF) In the ORDER
entity, Customer Name, Address, Post Code and Telephone Number are all dependent on Customer Number
ORDER
ORDER_ITEM
ITEM
(Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number)
(*Order Number*Item CodeQuantity)
(Item CodeDescriptionUnit Cost)
Third Normal Form (3NF) Remove these
attributes to a new entity
ORDER
ORDER_ITEM
ITEM
(Order NumberOrder DateCustomer NumberCustomer NameAddressPost CodeTelephone Number)
(*Order Number*Item CodeQuantity)
(Item CodeDescriptionUnit Cost)
Third Normal Form (3NF) Remove these
attributes to a new entity
Customer Number is the key of the new entity
Leave Customer Number behind as a foreign key
ORDER
CUSTOMER
ORDER_ITEM
ITEM
(Order NumberOrder Date*Customer Number)
(Customer NumberCustomer NameAddressPost CodeTelephone Number)
(*Order Number*Item CodeQuantity)
(Item CodeDescriptionUnit Cost)
Third Normal Form (3NF) A data model is in
3NF if it is in 2NF and there are no non-key dependencies
ORDER
CUSTOMER
ORDER_ITEM
ITEM
(Order NumberOrder Date*Customer Number)
(Customer NumberCustomer NameAddressPost CodeTelephone Number)
(*Order Number*Item CodeQuantity)
(Item CodeDescriptionUnit Cost)
Third Normal Form (3NF)
We can add a customer to the Customer table without the customer having to place an order
We can delete an order in the Order table without deleting details of the customer who placed the order
We can update a customer’s details once in the Customer table without affecting the orders placed by that customer in the Order table
Memory Aid
In 3NF, each attribute is dependent on
the key the whole key and nothing but the key