2017-05-06 46 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 

這樣你就能多個成員存儲爲家庭和使用連接這些表就可以打印有關家庭在單個查詢所有信息。