Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我是否应该进一步规范化多个表中使用的外键集?_Mysql_Sql_Postgresql - Fatal编程技术网

Mysql 我是否应该进一步规范化多个表中使用的外键集?

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

如果数据库中的表包含相同的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
    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
)