2011-02-18 3 views
0

私は人のテーブルとサービスチケットのテーブルを持っています。サービスチケットは1 +人を指し、時間の経過とともに人々は複数のチケットに関連付けられる可能性があります。 SQLデータベースでこの関係を表現する最良の方法は何ですか?SQLテーブル:テーブルBの単一レコードのテーブルAの未知数の行への参照を格納します

私の2つのオプションは、私が必要とする人のIDをすべて格納するのに十分な列を作成するかのようです。データベースからフェッチした後にCSV形式で処理される単一の巨大な文字列です。これらのオプションの両方が最大の容量を持っています。これは悪いデザインのように見えます.2番目のデザインは、人物IDを使用して参加できないことを意味します。

ちょっとした背景 - 私はクラスプロジェクトのバックエンドの一部としてかなり小さなデータベースを実装しています。私はSQLで実際に働いたことがないし、私が知っていることは独学であるということです。

私はこれが重複した質問でなければならないと感じますが、同様のものを見つけることはできません。場合は、チケット(ID、...)、人々(ID、...)とTicketsPeopleJoin(ticketId、peopleId)

答えて

2

ないようにテーブルを結合:多対多の関係は、一般的に3つのテーブルを作成するために

+0

+1は、化合物PKを明示的に特定するために、この3番目の表が他の回答には役立たない理由を理解するのに役立ちました。 –

2

このsiはMANYからMANYまでの関係船で、それに応じてテーブルを作ります。

テーブルを作成し、

PeopleServiceLink: 
PersonID, 
ServieTicketID, 
PRIMARY KEY (PersonID, ServieTicketID) 

のようなものはUnderstanding SQL: Many to Many Relationships

2

のリード聞くがperson_id & ticket_id列を持つ別のtickets_peopleテーブルを作成してもらいます。

関連する問題