在 Excel 中将数据分解为有条理的主题
下面的几个示例数据表在拆分为销售人员、产品、客户和订单的表格后,显示 Excel 工作表中的相同信息。 表设计不是最终的,但它在正确的轨道上。
Salespersons 表仅包含有关销售人员的信息。 请注意,每个记录都有一个唯一的 ID (SalesPerson ID) 。 SalesPerson ID 值将在“订单”表中用于将订单连接到销售人员。
售货员
Salesperson ID
姓氏
名字
101
Li
耶鲁
103
亚当斯
艾伦
105
Hance
米申
107
科赫
芦苇
“产品”表仅包含有关产品的信息。 请注意,每条记录都有一个唯一的 ID (产品 ID) 。 “产品 ID”值将用于将产品信息连接到“订单详细信息”表。
产品
产品 ID
价格
A-2275
16.75
B-205
4.50
C-789
7.00
C-795
9.75
D-4420
7.25
F-198
5.25
“客户”表仅包含有关客户的信息。 请注意,每个记录都有一个唯一的 ID (客户 ID) 。 “客户 ID”值将用于将客户信息连接到“订单”表。
客户
客户 ID
名称
街道地址
城市
州/省
邮政编码
手机
1001
康拓工程有限公司
2302 哈佛大道
Bellevue
WA
98227
425-555-0222
1003
嘉元实业
1025 哥伦比亚圈
柯克兰
WA
98234
425-555-0185
1005
Fourth Coffee
7007 康奈尔街
雷德蒙德
WA
98199
425-555-0201
“订单”表包含有关订单、销售人员、客户和产品的信息。 请注意,每个记录都有一个唯一的 ID (订单 ID) 。 此表中的某些信息需要拆分为包含订单详细信息的附加表,以便“订单”表仅包含四列:唯一的订单 ID、订单日期、销售人员 ID 和客户 ID。 此处显示的表尚未拆分为“订单详细信息”表。
订单
订单 ID
订单日期
SalesPerson ID
客户 ID
产品 ID
数量
2349
3/4/09
101
1005
C-789
3
2349
3/4/09
101
1005
C-795
6
2350
3/4/09
103
1003
A-2275
2
2350
3/4/09
103
1003
F-198
6
2350
3/4/09
103
1003
B-205
1
2351
3/4/09
105
1001
C-795
6
2352
3/5/09
105
1003
A-2275
2
2352
3/5/09
105
1003
D-4420
3
2353
3/7/09
107
1005
A-2275
6
2353
3/7/09
107
1005
C-789
5
订单详细信息(如产品 ID 和数量)从“订单”表中移出,并存储在名为“订单详细信息”的表中。 请记住,有 9 个订单,因此此表中有 9 条记录是有意义的。 请注意,Orders 表具有唯一 ID (Order ID) ,该 ID 将从“订单详细信息”表中引用。
Orders 表的最终设计应如下所示:
订单
订单 ID
订单日期
SalesPerson ID
客户 ID
2349
3/4/09
101
1005
2350
3/4/09
103
1003
2351
3/4/09
105
1001
2352
3/5/09
105
1003
2353
3/7/09
107
1005
“订单详细信息”表不包含需要唯一值的列 (也就是说,没有主键) ,因此任何或所有列都可以包含“冗余”数据。 但是, (此规则适用于数据库) 中的任何表,则此表中的两条记录不应完全相同。 在此表中,应有 17 条记录,每个记录对应于单个订单中的产品。 例如,在订单 2349 中,三个 C-789 产品构成整个订单的两个部分之一。
因此,“订单详细信息”表应如下所示:
订单详细信息
订单 ID
产品 ID
数量
2349
C-789
3
2349
C-795
6
2350
A-2275
2
2350
F-198
6
2350
B-205
1
2351
C-795
6
2352
A-2275
2
2352
D-4420
3
2353
A-2275
6
2353
C-789
5