A.1 样例表
本书中所用的表是一个假想玩具经销商使用的订单录入系统的组成部分。这些表用来完成以下几项任务:
- 管理供应商;
- 管理产品目录;
- 管理顾客列表;
- 录入顾客订单。
完成它们需要5个表(它们作为一个关系数据库设计的组成部分紧密关联)。以下各节给出每个表的描述。
说明:简化的例子
这里使用的表不完整,现实世界中的订单录入系统还会记录这里所没有的大量数据(如工资和记账信息、发货追踪信息等)。不过,这些表确实示范了现实世界中你将遇到的各种数据的组织和关系。读者可以将这些技术用于自己的数据库。
表的描述
下面介绍5个表及每个表内的列名。
1. Vendors
表
Vendors
表存储销售产品的供应商。每个供应商在这个表中有一个记录,供应商ID列(vend_id
)用于进行产品与供应商的匹配。
表A-1 Vendors
表的列
列 | 说 明 |
---|---|
vend_id | 唯一的供应商ID |
vend_name | 供应商名 |
vend_address | 供应商的地址 |
vend_city | 供应商所在城市 |
vend_state | 供应商所在州 |
vend_zip | 供应商地址邮政编码 |
vend_country | 供应商所在国家 |
- 所有表都应该有主键。这个表应该用
vend_id
作为其主键。
2. Products
表
Products
表包含产品目录,每行一个产品。每个产品有唯一的ID(prod_id
列),并且借助vend_id
(供应商的唯一ID)与供应商相关联。
表A-2 Products
表的列
列 | 说 明 |
---|---|
prod_id | 唯一的产品ID |
vend_id | 产品供应商ID(关联到Vendors表的vend_id) |
prod_name | 产品名 |
prod_price | 产品价格 |
prod_desc | 产品描述 |
- 所有表都应该有主键。这个表应该用
prod_id
作为其主键。 - 为实施引用完整性,应该在
vend_id
上定义一个外键,关联到Vendors
的vend_id
列。
3. Customers
表
Customers
表存储所有顾客信息。每个顾客有唯一的ID(cust_id
列)。
表A-3 Customers
表的列
列 | 说 明 |
---|---|
cust_id | 唯一的顾客ID |
cust_name | 顾客名 |
cust_address | 顾客的地址 |
cust_city | 顾客所在城市 |
cust_state | 顾客所在州 |
cust_zip | 顾客地址邮政编码 |
cust_country | 顾客所在国家 |
cust_contact | 顾客的联系名 |
cust_email | 顾客的电子邮件地址 |
- 所有表都应该有主键。这个表应该用
cust_id
作为它的主键。
4. Orders
表
Orders
表存储顾客订单(不是订单细节)。每个订单唯一编号(order_num
列)。Orders
表按cust_id
列(关联到Customers
表的顾客唯一ID)关联到相应的顾客。
表A-4 Orders
表的列
列 | 说 明 |
---|---|
order_num | 唯一的订单号 |
order_date | 订单日期 |
cust_id | 订单顾客ID(关联到Customers表的cust_id) |
- 所有表都应该有主键。这个表应该用
order_num
作为其主键。 - 为实施引用完整性,应该在
cust_id
上定义一个外键,关联到Customers
的cust_id
列。
5. OrderItems
表
OrderItems
表存储每个订单中的实际物品,每个订单的每个物品一行。对于Orders
表的每一行,在OrderItems
表中有一行或多行。每个订单物品由订单号加订单物品(第一个物品、第二个物品等)唯一标识。订单物品用order_num
列(关联到Orders
表中订单的唯一ID)与其相应的订单相关联。此外,每个订单物品包含该物品的产品ID(把物品关联到Products
表)。
表A-5 OrderItem
s表的列
列 | 说 明 |
---|---|
order_num | 订单号(关联到Orders表的order_num) |
order_item | 订单物品号(订单内的顺序) |
prod_id | 产品ID(关联到Products表的prod_id) |
quantity | 物品数量 |
item_price | 物品价格 |
- 所有表都应该有主键。这个表应该用
order_num
和order_item
作为其主键。 - 为实施引用完整性,应该在
order_num
和prod_id
上定义外键,关联order_num
到Orders
的order_num
列,关联prod_id
到Products
的prod_id
列。
数据库管理员通常使用关系图来说明数据库表的关联方式。要记住,正如上面表描述提到的,外键定义了这些关系。图A-1是本附录描述的五个表的关系图。
图A-1 样例表关系图