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