9.1 About Planning the Database Schema
The objective of this example is to develop a simple system for managing customer purchase orders. To do this, you must devise a database schema plan. First, identify the business entities involved and their relationships. In this example, the basic entities are customers, purchase orders, line items, and stock items. So, you can have the following tables in the schema:
-
Customers
-
Orders
-
LineItems
-
StockItems
The Customers
table has a one-to-many relationship with the Orders
table because a customer can place one or many orders, but a given purchase order can be placed by only one customer. The relationship is optional because zero customers may place a given order. For example, an order may be placed by someone previously not defined as a customer.
The Orders
table has a many-to-many relationship with the StockItems
table because a purchase order can refer to many stock items, and a stock item can be referred to by many purchase orders. However, you do not know which purchase orders refer to which stock items. As a result, you introduce the notion of a line item. The Orders
table has a one-to-many relationship with the LineItems
table because a purchase order can list many line items, but a given line item can be listed by only one purchase order.
The LineItems
table has a many-to-one relationship with the StockItems
table because a line item can refer to only one stock item, but a given stock item can be referred to by many line items. The relationship is optional because zero line items may refer to a given stock item.
Figure 9-1 depicts the relationships between tables. In the schema plan, you establish these relationships using primary and foreign keys.
A primary key is a column or combination of columns whose values uniquely identify each row in a table. A foreign key is a column or combination of columns whose values match the primary key in some other table. For example, the PONo
column in the LineItems
table is a foreign key matching the primary key in the Orders
table. Every purchase order number in the LineItems.PONo
column must also appear in the Orders.PONo
column.
Figure 9-1 Schema Plan for Purchase Order Application
Description of "Figure 9-1 Schema Plan for Purchase Order Application"