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

Add files to multiple tables M:N

将多个文件添加到多个 table 的最佳数据模型是什么?例如,我有 5 table 篇文章、博客、帖子...对于每个项目,我想存储多个文件。文件 table 仅包含文件路径(不包含物理文件)。

示例:

我正在使用链接 table,但是当我将来创建新的 table 例如 "comments" 时,我需要向链接 [=22] 添加新列=].

是否有更好的方法对此类数据进行建模?

解决这个问题的一种方法是使用 table 继承模式。主要思想是建立一个基础 table(我们称之为 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...