Mysql 我是否应该进一步规范化多个表中使用的外键集?
如果数据库中的表包含相同的FK,是否应该对它们进行规范化 以下是有问题的db表:Mysql 我是否应该进一步规范化多个表中使用的外键集?,mysql,sql,postgresql,Mysql,Sql,Postgresql,如果数据库中的表包含相同的FK,是否应该对它们进行规范化 以下是有问题的db表: user ( user_id int PK, ... ... ) user_cat ( user_cat_id int PK, user_id int FK, effective_date date, location_id FK, <-- dup qualification_id FK, <-- dup
user (
user_id int PK,
...
...
)
user_cat (
user_cat_id int PK,
user_id int FK,
effective_date date,
location_id FK, <-- dup
qualification_id FK, <-- dup
business_id FK <-- dup
)
user_admin_cat (
admin_cat_id int PK,
user_id int FK,
effective_date date,
company_id FK,
location_id FK, <-- dup
qualification_id FK, <-- dup
business_id FK <-- dup
)
用户(
用户id int PK,
...
...
)
用户_cat(
用户\u类别\u id int PK,
用户id int FK,
生效日期,
位置_idfk,1)规范化方案设计更简洁,更易于维护
2) 有时非规范化布局在有效性方面更好。比方说,如果对小表user\u cat
有很多查询,而对大表user\u admin\u cat
几乎没有查询,并且没有人需要这个联合,那么它可能是有效的。1)规范化方案的设计更简洁,维护更容易
2) 有时非规范化布局在有效性方面更好。比如说,如果对小表user\u cat
有很多查询,而对大表user\u admin\u cat
几乎没有查询,并且没有人需要这个联合,那么它可能是有效的。从您描述的内容来看,我看不出有理由“正常化”它。我甚至会说这与正常化无关
我个人关于规范化的简单规则是:对于一个事实的更改,我是否需要执行一次以上的插入/更新/删除操作
还是有我无法陈述的事实组合
或者我可以用两种不同的方式来陈述事实
我在这里看不到
所以我对2的回答是:没什么,因为没有问题
不过,可能存在一些隐藏的非规范化。但这并不在你所描述的内容中。从你所描述的内容来看,我看不出有理由将其“正常化”。我甚至会说这与正常化无关
我个人关于规范化的简单规则是:对于一个事实的更改,我是否需要执行一次以上的插入/更新/删除操作
还是有我无法陈述的事实组合
或者我可以用两种不同的方式来陈述事实
我在这里看不到
所以我对2的回答是:没什么,因为没有问题
不过,可能存在一些隐藏的非规范化。但这不是你所描述的。谢谢你的回复,谢谢你的回复。
user (
user_id int PK,
...
...
)
user_cat (
user_cat_id int PK,
user_id int FK,
effective_date date,
shared_id, FK <-- dup
)
user_admin_cat (
admin_cat_id int PK,
user_id int FK,
effective_date date,
company_id FK,
shared_id, FK <-- dup
)
shared_user_cat_fks (
shared_id int PK,
location_id FK,
qualification_id FK,
business_id FK
)