2017-04-02 19 views
1

他の値の集合を指し示す1つのテーブルに外部キーを入れたい。MYSQL:外部キーにコレクションが含まれていますか?

たとえば、親テーブルと子テーブルを作成します。それぞれの親は、すべての子供、そして各子供は親を含むべきです。

私はMySQLでこれを行うことができますか?はいの場合はどうしたらいいですか?それ以外は何ができますか?

+0

リレーショナルDBMS(SQL)の任意の風味を使用している場合は、コレクション、親のためのあなたの必要性を再公式化する必要があり、エンティティと関係の言語で子供たち。 https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model次に、あなたの関係を定義するためにあなたのエンティティとfksと一緒に行くためのテーブルを作るほうがはるかに簡単です。 –

+0

質問を編集し、データを使用した例を提供してください。 –

+0

こんにちは、ようこそ、StackOverflow、ykaner。あなたが扱っているデータを示すASCIIアートダイアグラムを描くことをお勧めしますか? –

答えて

0

私が正しく理解していれば、これは単に外部キー関係です:

create table children as (
    childId int auto_increment primary key, 
    parentId int not null, 
    . . . 
    constraint fk_children_parent foreign key (parentId) references parents(parentId) 
); 

これはあなたの2 requiremens満たし:

  • を各親にはすべての子が含まれている必要があります
  • 各子には親を含める必要があります

あなたは親のための子供をしたい場合は、操作を行います。

select parentId, group_concat(childId) as children 
from children 
group by parentId; 
0

外部キーは、2つのテーブル間の関係を強制するの列(または列の集合)を定義します。正確なデータを保証するために、この関係を強制するのはデータベースサーバーの責任です。外部キーのモデル定義は、子(外部)表で次に参照される固有のデータ・セットを含む親(1次)表で構成されます。完全な説明については

はこれを見て持っている:http://www.sparxsystems.com/enterprise_architect_user_guide/12.1/database_engineering/foreignkeys.html

関連する問題