2017-05-06 4 views
0

ファミリー(主キー、名前、メンバー)のデータを格納できるデータベース構造を作成したいと思います。 MySQL - 配列を表現

は、私はこれらの2つのテーブルを使用して、それを行うためのアイデアを思い付いた:

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

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

私はメンバーテーブルのidで家族のメンバーを参照したいと思います。しかし、MySQLには配列がないので、複数のメンバーを1つの列に格納するにはどうすればいいですか?または、この場合のDB構造が改善されていますか?

Kenta1561

+0

@ GurwinderSinghマッピングテーブルとは何ですか? – wafflemiracle

+0

'family'テーブルを指し示す' members'テーブルに、単に外部キーを持つことができます。 – Barmar

+0

誰かが複数の家族にいることはできますか? – Barmar

答えて

1

配列として単一のセルに複数の値を格納しようとしないでください。それらの配列の値の1つに基づいて行を検索したり、その列を持つテーブルと他の並べ替え操作を結合したりする必要があるときには、後で悪夢になるでしょう。

物事を正規化しておくために、別のマッピングテーブルを作成することができます。

あなたは3つの列、た​​とえば、と別のテーブルのfamily_membersを作成することができます。

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

または多数のマッピングへの1つがある場合、家族のテーブルにFKとしてメンバーテーブルの余分な列を持っています。

マッピングテーブルは、多対多のマッピングが可能な場合に役立ちます。あなたの家族として今

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

1

あなたが構造の下に試すことができ

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

tblMember

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

Member_Idに主キーを作成tblFamilyテーブルにMember_Idへの外部キーを作成します。できますmulメンバテーブルにmember_idを格納する代わりに、MAMBERSテーブルにFAMILY_IDを格納するとよいでしょう。

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

このようにすると、家族の複数のメンバーを保存でき、これらのテーブルの結合を使用すると、家族に関するすべての情報を単一のクエリで印刷できます。