2017-05-06 41 views
0

我想创建一个可以存储关于系列(主键,名称及其成员)数据的数据库结构。MySQL - 代表一个数组

我想出了利用这两个表做它的想法:

TABLE "family": 
- id (INT) 
- name (VARCHAR) 
- members (?) 

TABLE "members" 
- id (INT) 
- name (VARCHAR) 

我想通过在成员表中的ID来引用家族的成员。但是由于MySQL没有数组,我该如何在一列中存储多个成员?或者这种情况下有更好的DB结构吗?

Kenta1561

+0

@GurwinderSingh什么是映射表? – wafflemiracle

+0

您可以在'members'表中添加一个指向'family'表的外键。 – Barmar

+0

有人可以在多个家庭中吗? – Barmar

回答

1

不要尝试将多个值作为数组存储在单个单元格中。如果您必须根据这些数组中的某个值搜索行,或者将该列与该列的其他操作以及其他操作进行连接,那么对您而言,这将是一场噩梦。

您可以为此创建一个单独的映射表,以使事物标准化。

您可以创建,比方说,三列单独的表family_members:

id (auto increment), 
family_id (FK to family table), 
member_id (FK to members table) 

或者有成员表作为FK家庭表一个额外的列,如果有一对多的映射。

如果可能存在多对多映射,映射表将会有所帮助。

1

tblFamily表创建外键,Member_Id

TABLE "tblFamily": 
- Fam_Id (INT) 
- Family_Name (VARCHAR) 
- Member_Id (INT) 

tblMember

TABLE "tblMembers" 
- Member_Id (INT) 
- Member_Name (VARCHAR) 
0

创建主键Member_Id你可以试试下面的结构:

Table "Family" 
- FAMILY_ID INT (PK) 
- FAMILY_NAME VARCHAR 

现在你的家人可以有多种tiple成员,所以不要将member_id存储在family表中,而是将FAMILY_ID存储在MEMBERS表中。

Table "Member" 
- MEMBER_ID INT (PK) 
- MEMBER_NAME VARCHAR 
- FAMILY_ID INT (FK) REFERENCES FAMILY.FAMILY_ID 

这样你就能多个成员存储为家庭和使用连接这些表就可以打印有关家庭在单个查询所有信息。