防止反规范化
Prevent denormalization
我想知道在这种情况下如何防止反规范化:
Table Categories:
- id
- name
Table Category_types:
- id
- name
Association table: (category and category types are in a many-to-many relationship)
- id
- id_cat
- id_cat_type
我有一个 table Request
,我必须在其中存储有关此 Request
和 CategoryType
的 Category
的信息。
目前架构是:
Request:
- id
- title
- desc
- id_cat
- id_cat_type
顺便说一句,我认为这是个坏主意,因为 id_cat 和 id_cat_type 之间存在函数依赖关系(我猜?)。
我想我可以解决存储关联 ID table
的问题
Request:
- id
- title
- desc
- id_association_table
我知道拆分 table 可能是最好的选择,但我想知道是否有其他方法可以解决此类问题。
谢谢
-- Category CAT exists.
--
category {CAT}
PK {CAT}
-- Category type TYP exists.
--
ctype {TYP}
PK {TYP}
对于每个类别,该类别可能属于不止一种类别类型。对于每个类别类型,可能有多个类别属于该类别类型。
-- Category CAT is of type TYP.
--
category_ctype {CAT, TYP}
PK {CAT, TYP}
FK1 {CAT} REFERENCES category {CAT}
FK2 {TYP} REFERENCES ctype {TYP}
-- Request REQ is of category CAT, category type TYP.
--
request {REQ, CAT, TYP}
PK {REQ}
FK {CAT, TYP} REFERENCES category_ctype {CAT, TYP}
注:
All attributes (columns) NOT NULL
PK = Primary Key
FK = Foreign Key
我想知道在这种情况下如何防止反规范化:
Table Categories:
- id
- name
Table Category_types:
- id
- name
Association table: (category and category types are in a many-to-many relationship)
- id
- id_cat
- id_cat_type
我有一个 table Request
,我必须在其中存储有关此 Request
和 CategoryType
的 Category
的信息。
目前架构是:
Request:
- id
- title
- desc
- id_cat
- id_cat_type
顺便说一句,我认为这是个坏主意,因为 id_cat 和 id_cat_type 之间存在函数依赖关系(我猜?)。 我想我可以解决存储关联 ID table
的问题Request:
- id
- title
- desc
- id_association_table
我知道拆分 table 可能是最好的选择,但我想知道是否有其他方法可以解决此类问题。
谢谢
-- Category CAT exists.
--
category {CAT}
PK {CAT}
-- Category type TYP exists.
--
ctype {TYP}
PK {TYP}
对于每个类别,该类别可能属于不止一种类别类型。对于每个类别类型,可能有多个类别属于该类别类型。
-- Category CAT is of type TYP.
--
category_ctype {CAT, TYP}
PK {CAT, TYP}
FK1 {CAT} REFERENCES category {CAT}
FK2 {TYP} REFERENCES ctype {TYP}
-- Request REQ is of category CAT, category type TYP.
--
request {REQ, CAT, TYP}
PK {REQ}
FK {CAT, TYP} REFERENCES category_ctype {CAT, TYP}
注:
All attributes (columns) NOT NULL
PK = Primary Key
FK = Foreign Key