MySQLは、関係が1-1であるか、1対多であるかを認識しておらず、知る必要もありません。
SQLは多多関係をサポートしていません。すべて、多多関係を2に分割する中間テーブルが必要です。個別の1-多数。
違いは、関係を制御するロジックにあります。これは、作成するコードにあります。
1対1の関係は、テーブルが同じ主キー(PK)を共有することによって維持されます。
他のテーブルPKを指す外部キーとしてPKを宣言するセカンダリテーブル。
Table chinese_mother (
id integer primary key,
name....
Table chinese_child (
id integer primary key,
name ....
....,
foreign key (id) references chinese_mother.id
関係の方向1 -> many
vsmany <- 1
リンクフィールドの場所によって決まります。
通常、すべてのテーブルには一意のid
があります リンクフィールドはtablename_id
と呼ばれます 。
リンクフィールドが含まれるテーブルはmany
関係の側では、もう一方のテーブルは1
にあります サイド。
Table user
id: primary key
name......
.....
Table location
id: primary key
user_id foreign key references (user.id)
x
y
.......
リンクフィールドをlocation
に配置する テーブルでは、場所に1人のユーザーしか持てないように強制します。ただし、ユーザーは多くの場所を持つことができます。