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