标签:sql mysql database-design database data-modeling
例如,假设我有一个用户模型.用户有登录,密码,电子邮件地址,头像等等.但是有两种类型的用户将使用这个网站,比如父母和企业.我需要为父母存储一些不同的信息(例如孩子的姓名,家庭伴侣,工资等),而不是商业(例如行业,员工人数等),但也有一些是相同的,比如登录和密码.
如何在基于SQL的数据库中正确构造它?谢谢!
–UPDATE–
在进一步挖掘之后,我认为多态关联可能实际上更有意义.但是我对他们了解不多,我有什么理由不想使用它们,或者说STI更好?它们似乎完全相同,只是父母或企业特有的字段存储在单独的表中,我认为这是我想要的.不是吗?
解决方法:
在面向对象的环境中,这将通过继承进行建模.有几种方法可以将继承映射到数据库表.最简单的是Single Table Inheritance.如果你有一个面向对象的环境消耗数据库,这是值得研究的.
更新:STI与其他替代方案
如果不同的字段数很少,我会选择STI,因为这很容易实现,并且不需要额外的连接.另外两个主要的替代方案是
>每班表
>每个混凝土类别的表格
每班表
如果在类型之间存在许多不同的字段,则它是优选的.缺点是几乎所有查询都需要在基类表和一个或多个子类表之间进行连接操作.
每个混凝土类表
为了解决每个表的连接问题,每个混凝土类的表是另一种方法.但是,它要求属于抽象基类的公共字段存在于多个表中.这违反了DRY原则,并要求联合查询从几种具体类型中获取公共属性.
标签:sql,mysql,database-design,database,data-modeling 来源: https://codeday.me/bug/20190827/1741133.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。