我是否正确规范了这个 table?
Did I normalize this table correctly?
我对如何从 1NF 到 2NF 感到困惑,因为我的 1NF 有 3 个主键(我不熟悉在单个 table 中使用 3 个主键,但我相信这是最好的选择).下面列出了我的尝试。请让我知道它是否不正确以及我如何改进。
Un-normalized Table
[Patient#, Patient_Name, First_Seen, Social_Worker, (Visit_Date, Visit_Time,
Visit_Reason, New_Symptm, LevelofPain)]
1NF Tables
**Patient_Visit_Time** [Patient#(PK), Visit_Date(PK), Visit_Time(PK), Visit_Reason,
New_Symptm, LevelofPain, Patient_FirstName, Patient_LastName, First_Seen,
SocialWorker_FirstName, SocialWorker_LastName]
2NF Tables
**Patient** [Patient#(PK), Patient_FirstName, Patient_LastName, First_Seen,
SocialWorker_FirstName, SocialWorker_LastName]
**Visit_Time** [Visit_Date(PK), Visit_Time(PK), Visit_Reason, New_Symptm, LevelofPain,
Patient#(FK)]
3NF Tables
Same as 2NF
您的规范化大部分是正确的。我看到的唯一区别是您没有在 Visit_Time
的 PK 中包含 Patient#
。在您的 1NF 中,不同的患者可以同时就诊,但在您的 2NF 中则不行。您的 2NF 就目前而言并非无效,但规范化不会改变关系的含义。
关于术语的说明:您的 1NF 有一个由 3 个属性组成的复合主键。它不是 3 个单独的键。除了 table 只能有一个主键(这就是它被称为主键的原因)这一事实之外,键中的每个条目都必须是唯一的。在复合键中,每个条目都是属性值的唯一组合。单独的键意味着这 3 个属性中的每一个都将是唯一的,从而防止患者多次访问(或每天或每次访问超过一名患者)。
我对如何从 1NF 到 2NF 感到困惑,因为我的 1NF 有 3 个主键(我不熟悉在单个 table 中使用 3 个主键,但我相信这是最好的选择).下面列出了我的尝试。请让我知道它是否不正确以及我如何改进。
Un-normalized Table
[Patient#, Patient_Name, First_Seen, Social_Worker, (Visit_Date, Visit_Time,
Visit_Reason, New_Symptm, LevelofPain)]
1NF Tables
**Patient_Visit_Time** [Patient#(PK), Visit_Date(PK), Visit_Time(PK), Visit_Reason,
New_Symptm, LevelofPain, Patient_FirstName, Patient_LastName, First_Seen,
SocialWorker_FirstName, SocialWorker_LastName]
2NF Tables
**Patient** [Patient#(PK), Patient_FirstName, Patient_LastName, First_Seen,
SocialWorker_FirstName, SocialWorker_LastName]
**Visit_Time** [Visit_Date(PK), Visit_Time(PK), Visit_Reason, New_Symptm, LevelofPain,
Patient#(FK)]
3NF Tables
Same as 2NF
您的规范化大部分是正确的。我看到的唯一区别是您没有在 Visit_Time
的 PK 中包含 Patient#
。在您的 1NF 中,不同的患者可以同时就诊,但在您的 2NF 中则不行。您的 2NF 就目前而言并非无效,但规范化不会改变关系的含义。
关于术语的说明:您的 1NF 有一个由 3 个属性组成的复合主键。它不是 3 个单独的键。除了 table 只能有一个主键(这就是它被称为主键的原因)这一事实之外,键中的每个条目都必须是唯一的。在复合键中,每个条目都是属性值的唯一组合。单独的键意味着这 3 个属性中的每一个都将是唯一的,从而防止患者多次访问(或每天或每次访问超过一名患者)。