如何设置MySQL数据库关系
我有一个数据库,它有两个表“位置”和“类”。我熟悉在数据库表中设置某种父/子情况,但这一次让我陷入了一个循环 这种关系的运作方式与你所期望的完全一样。“位置”有多个“类”。但有些“类”位于多个“位置”。那我该怎么设置呢?是否需要创建第三个表来处理这些关系如何设置MySQL数据库关系,mysql,database,database-design,Mysql,Database,Database Design,我有一个数据库,它有两个表“位置”和“类”。我熟悉在数据库表中设置某种父/子情况,但这一次让我陷入了一个循环 这种关系的运作方式与你所期望的完全一样。“位置”有多个“类”。但有些“类”位于多个“位置”。那我该怎么设置呢?是否需要创建第三个表来处理这些关系 我正在使用MySQL/PHP(以防万一)是的,您需要第三个表。这被称为一个。该表(我建议)将有一个主键、一个位置ID列和一个类ID列。是的,您需要第三个表。这被称为一个。该表(我建议)将有一个主键、一个位置ID列和一个类ID列。您需要一个联接表
我正在使用MySQL/PHP(以防万一)是的,您需要第三个表。这被称为一个。该表(我建议)将有一个主键、一个位置ID列和一个类ID列。是的,您需要第三个表。这被称为一个。该表(我建议)将有一个主键、一个位置ID列和一个类ID列。您需要一个联接表:
tbl_location
ID: int
Name: Varchar(20)
tbl_class
ID: int
Name: Varchar(20)
tbl_classlocation
ID: int
locationID: int
classID: int
沿着这些线,基本上classlocation表连接了另外两个(locationId和classID都是位置表和类表的外键)您需要一个连接表:
tbl_location
ID: int
Name: Varchar(20)
tbl_class
ID: int
Name: Varchar(20)
tbl_classlocation
ID: int
locationID: int
classID: int
沿着这些线,本质上是classlocation表连接其他两个表(locationId和classID都是location表和class表的外键)是的,您需要第三个表,因为这是一个多对多关系
-------- -----------------
|Class | | ClassLocation | ------------
|--------| |-----------------| | Location |
|Id | <---- |ClassId | |------------|
|Name | |LocationId | ----> |Id |
|... | ----------------- |Name |
-------- | ... |
------------
-------------------
|类| |类位置|------------
|--------||--------------------位置|
|Id | | Id|
|... | ----------------- |名字|
-------- | ... |
------------
如果关系的方向很重要,您甚至可能需要另外两个表。如果“类属于位置”的含义与“位置属于类”的含义不同,则需要两个联接表,因为只有一个联接表不能说明关系的方向。但我想你的情况并非如此。是的,你需要第三张桌子,因为这是一个多对多的关系
-------- -----------------
|Class | | ClassLocation | ------------
|--------| |-----------------| | Location |
|Id | <---- |ClassId | |------------|
|Name | |LocationId | ----> |Id |
|... | ----------------- |Name |
-------- | ... |
------------
-------------------
|类| |类位置|------------
|--------||--------------------位置|
|Id | | Id|
|... | ----------------- |名字|
-------- | ... |
------------
如果关系的方向很重要,您甚至可能需要另外两个表。如果“类属于位置”的含义与“位置属于类”的含义不同,则需要两个联接表,因为只有一个联接表不能说明关系的方向。但我想你的情况并非如此。你能描述一下这种情况吗?ClassLocation表中的字段如何不足以表示关联的方向?你能描述一下这种情况吗?ClassLocation表中的字段如何不足以表示关联的方向?