微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何决定是否有外键

如何解决如何决定是否有外键

我有一个包含 demographicsconsent 数据的父表。

父表如下图

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 中。

,

以上提供的答案完全正确。但是如果我是开发者,我会提出如下问题:

  1. 正如您所提到的,随着时间的推移可能会有很多同意,记录它的时间戳列在哪里?我建议您添加该列。

  2. 您是否必须始终显示最新的同意状态?如果是,您在个人表中获得最新同意状态的想法是好的。如果没有,我建议您在需要时将视图加入个人和同意并显示最新的同意。这样,您将节省更少的数据,这意味着没有多余的同意状态。

希望我给了你一个正确的答案。

问候, 柴坦尼亚

,

我认为;

演示表已正确设计,您不应再次编辑。但与您的使用相关的同意表的设计可能会发生变化。如果您想查看所有同意数据,所有数据都可以在一个表中。除非您想查看所有同意数据,否则可以将最新数据保存在同意表中。并且旧的同意数据可以保存在同意历史表中。这样,您可以更快地访问最新数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。