Mysql 用于保存附件的数据库表
我正在为我的网站创建一个数据库,它要求用户在不同的页面上传多个附件。我希望将所有这些附件保存在一个表中,并从其他需要附件的表中引用该表 现在的问题是我如何做到这一点?到目前为止,我还没有弄明白它的逻辑。我的想法是:Mysql 用于保存附件的数据库表,mysql,database,Mysql,Database,我正在为我的网站创建一个数据库,它要求用户在不同的页面上传多个附件。我希望将所有这些附件保存在一个表中,并从其他需要附件的表中引用该表 现在的问题是我如何做到这一点?到目前为止,我还没有弄明白它的逻辑。我的想法是: attachment_tbl: attach_id file_name description item1_id -> FK item2_id -> FK item1_tbl: item1_id attachment1 attachment2 item2_tb
attachment_tbl:
attach_id
file_name
description
item1_id -> FK
item2_id -> FK
item1_tbl:
item1_id
attachment1
attachment2
item2_tbl:
item2_id
attachment1
attachment2
attachment3
现在,我如何将所有这些附件保存在同一个表中,而不在附件中有多个FK,就好像我添加了另一个有附件的项目3,这是否意味着要向附件中添加另一个FK
还有其他更简单更好的方法吗?添加一个关系表,通过一对多关系连接项目和附件:
attachment_tbl:
attach_id
file_name
description
item_tbl:
item_id
item_attachment_tbl:
item_id -> FK
attach_id -> FK
对于每个附件,item_attach表中将有一行:
item_id attach_id
-----------------
item1 attach1
item1 attach2
item2 attach3
item3 attach4
item3 attach5
item3 attach6
要查看项目的附件,必须加入表:
select a.file_name, a.description
from attachment_tbl a
inner join item_attachment_tbl ia on a.attach_id = ia.attach_id
where ia.item_id = 87;
另请参见添加关系表,该表通过一对多关系连接项目和附件:
attachment_tbl:
attach_id
file_name
description
item_tbl:
item_id
item_attachment_tbl:
item_id -> FK
attach_id -> FK
对于每个附件,item_attach表中将有一行:
item_id attach_id
-----------------
item1 attach1
item1 attach2
item2 attach3
item3 attach4
item3 attach5
item3 attach6
要查看项目的附件,必须加入表:
select a.file_name, a.description
from attachment_tbl a
inner join item_attachment_tbl ia on a.attach_id = ia.attach_id
where ia.item_id = 87;
另请参见如果您不希望附件中有多个外键,那么您需要不惜任何代价拥有一个桥接表(如果您不想保持关系:),但是它需要一个额外的字段作为项目名称,以区分不同项目表的记录。取回它们并没有那么复杂
item_attachment_tbl:
item_id -> FK
item_tbl_name
attach_id -> FK
如果您不希望附件中有多个外键,那么您需要不惜任何代价创建一个桥接表(如果您不想保持关系:),但是它需要一个额外的字段作为项目名称,以区分不同项目表的记录。取回它们并没有那么复杂
item_attachment_tbl:
item_id -> FK
item_tbl_name
attach_id -> FK
我想到了这一点,但它不会带来额外的性能冲击吗?此外,对于多个“项目”TBL,这是否也会在“项目附加”TBL中引入多个字段?如果您有一对多关系,这就是方法。您必须将连接存储在某个位置,如果每个附件都有一个表,您将在哪里停止?10桌还是20桌?另请参见修改后的答案。我想到了这一点,但它不会带来额外的性能冲击吗?此外,对于多个“项目”TBL,这是否也会在“项目附加”TBL中引入多个字段?如果您有一对多关系,这就是方法。您必须将连接存储在某个位置,如果每个附件都有一个表,您将在哪里停止?10桌还是20桌?另见修改后的答案。