【发布时间】:2013-11-10 21:45:14
【问题描述】:
Here is the data I have to normalize:
//
1NF
客户 ID [名字 (PK)、姓氏 (PK)、电话、地址、城镇、邮政编码、电子邮件]
预订[日期(PK)、房间(PK)、类型、入住人数、夜数、到达时间]
ExtraID [项目名称、项目成本、日期 (FK)、房间 (FK)]
//
名字 + 姓氏 = 复合键
日期 + 房间 = 复合键
//
这样好吗?
还要进入 2NF,我必须确定部分依赖关系。据我所知,电话、地址、城镇、邮政编码和电子邮件都需要组合键的两个部分? 那么这已经在 2NF 中了吗?
谢谢。
【问题讨论】:
-
名称作为主键从来都不是一个好主意。它们不能保证是唯一的,有时会发生变化。
-
@DanBracuk - 如果不是名字,那么电子邮件似乎是我最好的选择?制作一个由名字、姓氏和电子邮件组成的复合键怎么样 - 这实用吗?谢谢。
-
电子邮件也不是一个好的主键,因为它可能会改变,因此不建议成为复合键的一部分。顺便问一下,这是课堂作业吗?
-
好吧,这是我最后的想法——在 Customer_ID 表中创建一个合成键?是的,这是课堂作业,你为什么要问?
-
@Barboro37 我查看了您提供的数据,其中包括邮政编码。那是什么?那是独一无二的吗?至于我问这是否是一项作业,因为这里的一些人对作业特别是学生根本没有表现出努力的作业过敏;-) 但到目前为止你已经完成了你的工作,所以不用担心。
标签: mysql sql database oracle normalization