数据库:什么设计有一个 "document table" 引用其他表
Database: what design to have a "document table" referencing others tables
我有一些 table 可以有 0..*
文件。
如何在不指定 document
table 中的 table 字段的情况下设计我的数据模型?欢迎提出建议by editing the data model
(来源:yuml.me)
你应该试试这种模式
大概您的每个 my_table_n
表都包含引用不同文档的行。您可以像这样格式化这些行:
id (surrogate PK)
document_id (FK to document table)
data whatever information you need in this table.
然后,您可以获取包含额外数据的文档,如下所示:
SELECT d.something, d.another_thing,
t1.data, t2.other_data, t3.more_data, t4.too_much_data
FROM document d
LEFT JOIN mytable_1 t1 ON d.id = t1.document_id
LEFT JOIN mytable_2 t2 ON d.id = t2.document_id
LEFT JOIN mytable_3 t3 ON d.id = t3.document_id
LEFT JOIN mytable_4 t4 ON d.id = t4.document_id
I have some tables which can have 0..* documents.
我假设汽车、房子、水果、作者...是一些 table 有文件的人。
我建议有一个 parent table为这些元素调用 Documentary
。这部纪录片 table 将与所有这些 table 有 zero-or-one 关系。纪录片 table 中的一条记录将在其他 table 中显示一条记录。
纪录片 table 将有一个类型字段显示其相关记录类型。
在 document table 中拥有 Documentary 的 FK 将解决问题。
(在 OOP 术语中,Documentary 将是一个抽象实体)
我有一些 table 可以有 0..*
文件。
如何在不指定 document
table 中的 table 字段的情况下设计我的数据模型?欢迎提出建议by editing the data model
(来源:yuml.me)
你应该试试这种模式
大概您的每个 my_table_n
表都包含引用不同文档的行。您可以像这样格式化这些行:
id (surrogate PK)
document_id (FK to document table)
data whatever information you need in this table.
然后,您可以获取包含额外数据的文档,如下所示:
SELECT d.something, d.another_thing,
t1.data, t2.other_data, t3.more_data, t4.too_much_data
FROM document d
LEFT JOIN mytable_1 t1 ON d.id = t1.document_id
LEFT JOIN mytable_2 t2 ON d.id = t2.document_id
LEFT JOIN mytable_3 t3 ON d.id = t3.document_id
LEFT JOIN mytable_4 t4 ON d.id = t4.document_id
I have some tables which can have 0..* documents.
我假设汽车、房子、水果、作者...是一些 table 有文件的人。
我建议有一个 parent table为这些元素调用 Documentary
。这部纪录片 table 将与所有这些 table 有 zero-or-one 关系。纪录片 table 中的一条记录将在其他 table 中显示一条记录。
纪录片 table 将有一个类型字段显示其相关记录类型。
在 document table 中拥有 Documentary 的 FK 将解决问题。
(在 OOP 术语中,Documentary 将是一个抽象实体)