MySQL không biết, cũng không cần biết mối quan hệ là 1-1 hay 1-nhiều.
Không SQL nào hỗ trợ mối quan hệ nhiều-nhiều, tất cả đều yêu cầu một bảng trung gian chia mối quan hệ nhiều-nhiều thành 2 tách 1-nhiều.
Sự khác biệt nằm ở logic điều khiển các mối quan hệ, nằm trong mã mà bạn viết.
Mối quan hệ 1-1 được duy trì bằng cách để các bảng chia sẻ cùng một khóa chính (PK).
Với bảng phụ khai báo rằng PK như một khóa ngoại trỏ đến các bảng khác PK.
Table chinese_mother (
id integer primary key,
name....
Table chinese_child (
id integer primary key,
name ....
....,
foreign key (id) references chinese_mother.id
Hướng của mối quan hệ 1 -> many
so với many <- 1
được xác định bởi vị trí của trường liên kết.
Thông thường mỗi bảng có một id
duy nhất và trường liên kết được gọi là tablename_id
.
Bảng có trường liên kết trong đó là many
bên của mối quan hệ, bảng khác nằm trên 1
bên cạnh.
Table user
id: primary key
name......
.....
Table location
id: primary key
user_id foreign key references (user.id)
x
y
.......
Bằng cách đặt trường liên kết vào location
, bạn buộc mọi thứ để một vị trí chỉ có thể có 1 người dùng. Tuy nhiên, một người dùng có thể có nhiều vị trí.