Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.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
Php 如何在MySQL中设置1:many关系_Php_Mysql_Database Design - Fatal编程技术网

Php 如何在MySQL中设置1:many关系

Php 如何在MySQL中设置1:many关系,php,mysql,database-design,Php,Mysql,Database Design,我正试图建立一个可搜索的数据库,其中包含特定行业的首字母缩略词及其定义。我已经好几年没有做任何真正的编程了,所以我有点落后于学习曲线 我正在用PHP编写代码,并使用MySQL作为数据库。如果在Postgres中可以更容易地做到这一点,我并不反对更换DBs,但我不能使用Oracle或任何其他商业系统 所以问题是: 我想设置它,使每个首字母缩略词可以:(1)适用于1个,多个,或没有特定的组织;(2) 具有一个或多个关联定义 复杂性——至少在我看来是D——在于一些组织可能有一个首字母缩略词和多个定义,

我正试图建立一个可搜索的数据库,其中包含特定行业的首字母缩略词及其定义。我已经好几年没有做任何真正的编程了,所以我有点落后于学习曲线

我正在用PHP编写代码,并使用MySQL作为数据库。如果在Postgres中可以更容易地做到这一点,我并不反对更换DBs,但我不能使用Oracle或任何其他商业系统

所以问题是:

我想设置它,使每个首字母缩略词可以:(1)适用于1个,多个,或没有特定的组织;(2) 具有一个或多个关联定义

复杂性——至少在我看来是D——在于一些组织可能有一个首字母缩略词和多个定义,所有这些都与一个组织相关。同时,首字母缩略词可能有一个或多个与其他组织相关的定义

我把事情复杂化了吗

我想更好地理解如何在MySQL中设置表结构和关系——每个表中都有哪些字段和关系

如果有人这么想,SQL语句会很有帮助,但我希望至少能牢牢掌握数据库模式,这样我就可以创建表并导入一些示例数据

非常非常感谢大家


Dan

如果我理解你的问题,你可以使用三个单独的表格。首先,要有首字母缩略词/定义表,然后要有组织机构表。最后,创建一个缩略词organization表,它只引用缩略词表中的一个键,以及organization表中的一个键。这样,您可以拥有任意多个组织的首字母缩略词


设置数据库后,需要使用两个内部联接来联接三个表,只收集相应组织ID的首字母缩略词。

我只需要创建首字母缩略词表、组织表和定义表。在定义表中放置两个外键:一个用于首字母缩略词表中的条目,另一个用于组织表中的条目。

如果希望在表a和表B之间建立n:m关系,则需要第三个表

表A.字段:ID、名称

表B.字段:ID、名称

表AB.字段:A,B(A是对A.ID的引用,B是对B.ID的引用)

[表A]1-----*[表AB]*----1[表B]

示例

表a的内容:

ID Name
1  John
2  Mary
3  Piet
表b的内容:

ID Name
1  Microsoft
2  Google
3  Philips
表ab的内容:

ID Name
1  2
1  3
2  2
3  1
3  3
然后选择以下各项:

select a.name,b.name 
from a,b,ab 
where a.id=ab.a and b.id=ab.b
结果:

a.name  b.name
John    Google
John    Philips
Mary    Google
Piet    Microsoft     
Piet    Philips

解决方案应包含4个表:
首字母缩略词、定义、组织和首字母缩略词组织

Acronym(id, acronym, definition_id)
Definitions(id, definition)
Organizations(id, organization)
AcronymOrganization(id, acronym_id, organization_id)

所以我有3个表:缩写词(ID,缩写词)定义(ID,Def,Details,Verified,Date,Source,URL)机构(AcID,DefID,Agency),AcID&DefID指向缩写词或定义表的ID字段?以IAW为例:首字母缩略词1,IAW定义1,符合,描述性文本。。。2,在任何窗口内,描述性文本。。。3、不完整的评估撤销、说明文本。。。机构1,1,“Hello,Inc.”1,3,“Hello,Inc.”1,2,“John Doe Organization,Inc.”这里,“IAW”有2个与Hello,Inc.和1个与John Doe Organization,Inc.相关的定义。