Requirement analysis for Netshop-database
- 1. Introduction
- This is a simple netshop where customers can buy products.
- 2. Actions
-
- N1: We are able to add products
- N2: Every product has a name and price
- N3: Customer can check the name and price of the products
- N4: Customer can check how many pieces of particular product is on the store
- N5: We are able to check: who has ordered, what product and when
- N6: At this stage we are satisfied, if the customer can order only one procuct-type at a time. This means that
the customer can choose a product and then how many pieces, but the customer can not include another product to
the same order.
- N7: We need to know the address of the Customers, so that we can send the products to them
- I1: We need to know the email-address of our customers
- D1: We would like to know how old our customers are
- 3. Connections
- We have already made the payment system, so you don't have to take care of that.
- 4. Other features
- We would like that the shop is open 24 hour.
In above example "N" means that the feature is necessary, "I" means that it is important(but not mandatory) and "D" means desirable (it would be nice to have).
ER-model for Netshop-database
Normalization of Netshop-database
- NF1
- There is no similar fields in any tables. And all the fields are divided into pieces.
So the database is in NF1
- NF2
- Customerss and Products has a primary key which consist of one field, so they are in NF2.
In Orders-table Date and Amount are not dependent on Customers_ID or Products_Id, so the databse is in NF2.
- NF3
- In Customers table City is dependent on postalcode, even postalcode is not the primary key. So the database is not in NF3.
And this should be fixed!
Field definitions for NetShop-database
Field definitions for NetShop tables might be something like this:
Customers-table |
Field | Data Type | Qualifications |
id_customers | INT | primary key, values between 0 and 9999 |
firstname | VARCHAR(15) | mandatory, maximum length 15 characters |
lastname | VARCHAR(15) | mandatory, maximum length 15 characters |
streetaddress | VARCHAR(45) | mandatory, maximum length 45 characters |
postalcode | CHAR(5) | mandatory, length 5 characters |
city | VARCHAR(20) | mandatory, maximum lenth 20 characters |
email | VARCHAR(50) | mandatory, maximum length 50
characters |
Products-table |
Field | Data Type | Qualifications |
id_products | INT | primary key, values between 0 and 9999 |
name | VARCHAR(15) | mandatory, maximum length 15 characters |
price | DOUBLE | mandatory, values between 0 and 100 000 |
amount | INT | mandatory, values between 0 and 10 000 |
Orders-table |
Field | Data Type | Qualifications |
id_customers | INT | primary key, values between 0 and 9999, foreign key which references to table Customers |
id_products | INT | primary key, values between 0 and 9999, foreign key which references to table Products |
date | Date | mandatory, time has to include seconds,... and year |
amount | INT | mandatory, values between 0 and 10 000 |
Referential Integrity in NetShop-database
- We are not allowed to delete customer, if that customer has orders
- If we have to change Customers_Id, we will cascade the changes to Orders
- We not allowed to delete product, if that product has orders
- If we have to change Products_Id, we will cascade the changes to Orders