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

Sql 将文件添加到多个表M:N,sql,database,database-design,foreign-key-relationship,multiple-tables,Sql,Database,Database Design,Foreign Key Relationship,Multiple Tables,向多个表中添加多个文件的最佳数据模型是什么?例如,我有5个表格、文章、博客、帖子。。。对于每个项目,我想存储多个文件。文件表仅包含文件路径(不包含物理文件) 示例: 我正在使用链接表,但当我将来创建新表(例如“comments”)时,我需要向链接表添加新列 有没有更好的方法来建模这些数据?解决这个问题的一个方法是使用表继承模式。其主要思想是建立一个基本表(我们称之为content),其中包含有关所有项目(例如,创建日期)的一般共享信息,最重要的是与文件的关系。然后,您可以在将来添加其他内容类型

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

示例:

我正在使用链接表,但当我将来创建新表(例如“comments”)时,我需要向链接表添加新列


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

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

例如:


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

例如:


谢谢你的快速回答。表文章,PK Id引用内容。这意味着将为每篇文章创建一行内容。对于每个内容表(文章、帖子等),将在内容中创建一行,文件将通过链接表链接到此行。我的理解正确吗?相比之下,是否存在另一种解决方案?@steelbull是的。将内容视为所有具体内容类型(如文章、博客等)的“抽象父类”。我正在尝试您的解决方案。这很好,但存在的可能性,自动生成的文章,帖子id。。。桌子?谢谢你的快速回答。表文章,PK Id引用内容。这意味着将为每篇文章创建一行内容。对于每个内容表(文章、帖子等),将在内容中创建一行,文件将通过链接表链接到此行。我的理解正确吗?相比之下,是否存在另一种解决方案?@steelbull是的。将内容视为所有具体内容类型(如文章、博客等)的“抽象父类”。我正在尝试您的解决方案。这很好,但存在的可能性,自动生成的文章,帖子id。。。桌子?谢谢你的快速回答。表文章,PK Id引用内容。这意味着将为每篇文章创建一行内容。对于每个内容表(文章、帖子等),将在内容中创建一行,文件将通过链接表链接到此行。我的理解正确吗?相比之下,是否存在另一种解决方案?@steelbull是的。将内容视为所有具体内容类型(如文章、博客等)的“抽象父类”。我正在尝试您的解决方案。这很好,但存在的可能性,自动生成的文章,帖子id。。。桌子?
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...