Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 用于保存附件的数据库表_Mysql_Database - Fatal编程技术网

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桌?另见修改后的答案。