将文件添加到多个表M:N

时间:2015-06-03 17:01:30

标签: sql database database-design foreign-key-relationship multiple-tables

什么是将多个文件添加到多个表的最佳数据模型?我有5个表格文章,博客,帖子......以及我想要存储多个文件的每个项目。文件表仅包含文件路径(不是物理文件)。

例:
enter image description here

我正在使用链接表,但是当我将来创建新表例如" comments"时,我需要在链接表中添加新列。

有没有更好的方法来建模这些数据?

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是使用表继承模式。主要思想是建立一个基表(让我们称之为content),其中包含有关所有项目的一般共享信息(例如,创建日期),最重要的是与文件的关系。然后,您可以在将来添加其他内容类型,而不必担心它们与files的关系,因为content父类型已经处理过它。

E.g:

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...