MySQL(外來鍵變種)
day58
外來鍵的變種
a. 使用者表和部門表
使用者: 不唯一
1 alex 1
2 root 1
3 egon 2
4 laoyao 3
部門:
1 服務
2 保安
3 公關
~~~~~~~一對多 (不同使用者可以屬於同一個部門)
b. 使用者表和部落格表
使用者表:
1 alex
2 root
3 egon
4 laoyao
部落格表:
FK() + 唯一
1 /yuanchenqi/ 4
2 /alex3714/ 1
3 /asdfasdf/ 3
4 /ffffffff/ 2
~~~~~~~~~一對一 一個部落格對應於一個使用者
以上形式可以只給部分使用者設定密碼,而且不會產生多餘空格,減少空間佔用。
多對多形式
c. 使用者表(百合網) 相親記錄表
示例1:
使用者表
相親表
示例2:
使用者表
主機表
使用者主機關係表
~~~~~~~~~~~~~~~~~~多對多
create table userinfo2(
id int auto_increment primary key,
name char(10),
gender char(10),
email varchar(64)
)engine=innodb default charset=utf8;
create table host(
id int auto_increment primary key,
hostname char(64)
)engine=innodb default charset=utf8;
create table user2host(
id int auto_increment primary key,
userid int not null,
hostid int not null,
unique uq_user_host (userid,hostid),
CONSTRAINT fk_u2h_user FOREIGN key (userid) REFERENCES userinfo2(id),
CONSTRAINT fk_u2h_host FOREIGN key (hostid) REFERENCES host(id)
)engine=innodb default charset=utf8;
id 1號可以管理1,2,3號主機
不用以上這種形式,而是下表形式,再建一個表。
user,和host_id可以使用聯合唯一索引。