问题描述
我有一个包含 demographics
和 consent
数据的父表。
父表如下图
Person_id,Age,gender,Name,dob,Consent_agreed,Agreed_share_phone_number,agreed_share_email
1 21 M FM,10/1/90 N N N
2 23 F MF,11/1/92 Y Y Y
我打算存储如下数据
DEMO Table
Person_id,dob
111 21 M FM,10/1/90
222 23 F MF,11/1/92
CONSENT Table
Consent_Id Person_id Consent_agreed Phone_number email
1 111 N N N
2 222 Y Y Y
我创建了一个单独的同意表,因为一个人可能会随着时间的推移更新他的同意,并且可能会有多条记录。
我以这种方式对其进行标准化是否正确?
我应该如何决定是否在 consent_id
中提供 DEMO table
。
DEMO 表列是否应如下所示,consent_id
表示最新同意状态或同意状态不应包含在演示表中
Person_id,consent_id
解决方法
“一个人可能会随着时间的推移更新他的同意,并且可能会有多个记录。”一个人的多个同意行无疑是按照您的方式拆分表格的原因。
如果有效同意始终是某人的 consent
中的最新行(demographics
行),则没有理由将 consent_id
存储在 demographics
中。
以上提供的答案完全正确。但是如果我是开发者,我会提出如下问题:
-
正如您所提到的,随着时间的推移可能会有很多同意,记录它的时间戳列在哪里?我建议您添加该列。
-
您是否必须始终显示最新的同意状态?如果是,您在个人表中获得最新同意状态的想法是好的。如果没有,我建议您在需要时将视图加入个人和同意并显示最新的同意。这样,您将节省更少的数据,这意味着没有多余的同意状态。
希望我给了你一个正确的答案。
问候, 柴坦尼亚
,我认为;
演示表已正确设计,您不应再次编辑。但与您的使用相关的同意表的设计可能会发生变化。如果您想查看所有同意数据,所有数据都可以在一个表中。除非您想查看所有同意数据,否则可以将最新数据保存在同意表中。并且旧的同意数据可以保存在同意历史表中。这样,您可以更快地访问最新数据。