Ray*_*ian 0 database database-design third-normal-form database-normalization
我有这两张桌子。
如果我确定它们位于 3NF 中,这是正确的方法吗?我的答案:
StaffDetails( StaffID , SName, DOB, DivisionNo*)
Division( DivisionNo , DivName, DivSupervisorID)
StaffProject( StaffId *, ProjectNo *, SName, ProjectName, HoursAssigned)
项目(项目编号, 项目名称)
主键是粗体的,但是星号后面的原因是什么?
不,它并不完全是 3NF,正如您在表中复制的SName那样。StaffProjectStaffProject
这些表可能应该是:
员工详情
| 柱子 | 数据类型 | 约束条件 |
|---|---|---|
| 员工详情 | VARCHAR2 | 首要的关键 |
| S名称 | VARCHAR2 | |
| 出生日期 | 日期 | |
| 部门编号 | INT | 外键(部门) |
分配
| 柱子 | 数据类型 | 约束条件 |
|---|---|---|
| 部门编号 | INT | 首要的关键 |
| 分区名称 | VARCHAR2 | (可能是独一无二的) |
| DivSupervisorID | VARCHAR2 | 外键(员工详细信息) |
员工项目
| 柱子 | 数据类型 | 约束条件 |
|---|---|---|
| 员工ID | VARCHAR2 | 复合主键、外键(StaffDetails) |
| 项目编号 | VARCHAR2 | 复合主键、外键(项目) |
| 分配的时间 | 数字 | 检查 > 0 |
项目
| 柱子 | 数据类型 | 约束条件 |
|---|---|---|
| 项目编号 | INT | 首要的关键 |
| 项目名 | VARCHAR2 | (可能是独一无二的) |
至于你的符号问题,这是你的导师似乎正在使用的惯例,但不一定是全球认可的,所以你最好问他们;然而,主键似乎带有下划线,而外键旁边有一个星号。
StaffProject将具有既是复合主键又是外键的一部分的列,因此将具有两种表示法。