1
什么是将多个文件添加到多个表的最佳数据模型?例如,我有5个表格文章,博客,帖子...和每个项目我想存储多个文件。文件表只包含文件路径(不是物理文件)。将文件添加到多个表M:N
例子:
进出口使用的联系表,但是当我在将来例如创建新表“的意见”,那么我就需要新列添加到的联系表。
有没有更好的建模方式来建模这些数据?
什么是将多个文件添加到多个表的最佳数据模型?例如,我有5个表格文章,博客,帖子...和每个项目我想存储多个文件。文件表只包含文件路径(不是物理文件)。将文件添加到多个表M:N
例子:
进出口使用的联系表,但是当我在将来例如创建新表“的意见”,那么我就需要新列添加到的联系表。
有没有更好的建模方式来建模这些数据?
解决此问题的一种方法是使用表格继承模式。主要想法是有一个基本表(我们称之为content
),其中包含有关所有项目(例如创建日期)的一般共享信息,最重要的是与文件的关系。然后,您可以在将来添加其他内容类型,而不必担心它们与files
的关系,因为content
父类型已经处理它。
例如为:
CREATE TABLE flies (
id NUMERIC PRIMARY KEY,
path VARCHAR(100) NOT NULL
);
CREATE TABLE content (
id NUMERIC PRIMARY KEY,
created TIMESTAMP NOT NULL
);
CREATE TABLE links (
file_id NUMERIC NOT NULL REFERENCES files(id),
content_id NUMERIC NOT NULL REFERENCES content(id),
PRIMARY KEY (file_id, content_id)
);
CREATE TABLE articles (
id NUMERIC PRIMARY KEY REFERENCES content(id),
title VARCHAR(400),
subtitle VARCHAR(400)
);
-- etc...
谢谢你的快速答复。表文章,PK Id被引用到内容。 IT手段将为每篇文章创建1行内容。对于每个内容表(文章,帖子,...)将在内容中创建1行,文件将链接到带有链接表的这些行。我理解正确吗? – steelbull
为了比较,是否存在另一种解决方案? – steelbull
@steelbull是的。将内容看作所有具体内容类型的“抽象父类”,例如文章,博客等。 – Mureinik