Php 如何在MySQL中设置1:many关系
我正试图建立一个可搜索的数据库,其中包含特定行业的首字母缩略词及其定义。我已经好几年没有做任何真正的编程了,所以我有点落后于学习曲线 我正在用PHP编写代码,并使用MySQL作为数据库。如果在Postgres中可以更容易地做到这一点,我并不反对更换DBs,但我不能使用Oracle或任何其他商业系统 所以问题是: 我想设置它,使每个首字母缩略词可以:(1)适用于1个,多个,或没有特定的组织;(2) 具有一个或多个关联定义 复杂性——至少在我看来是D——在于一些组织可能有一个首字母缩略词和多个定义,所有这些都与一个组织相关。同时,首字母缩略词可能有一个或多个与其他组织相关的定义 我把事情复杂化了吗 我想更好地理解如何在MySQL中设置表结构和关系——每个表中都有哪些字段和关系 如果有人这么想,SQL语句会很有帮助,但我希望至少能牢牢掌握数据库模式,这样我就可以创建表并导入一些示例数据 非常非常感谢大家Php 如何在MySQL中设置1:many关系,php,mysql,database-design,Php,Mysql,Database Design,我正试图建立一个可搜索的数据库,其中包含特定行业的首字母缩略词及其定义。我已经好几年没有做任何真正的编程了,所以我有点落后于学习曲线 我正在用PHP编写代码,并使用MySQL作为数据库。如果在Postgres中可以更容易地做到这一点,我并不反对更换DBs,但我不能使用Oracle或任何其他商业系统 所以问题是: 我想设置它,使每个首字母缩略词可以:(1)适用于1个,多个,或没有特定的组织;(2) 具有一个或多个关联定义 复杂性——至少在我看来是D——在于一些组织可能有一个首字母缩略词和多个定义,
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.相关的定义。