復合主鍵對外鍵的影響

2022-08-04 17:33:14 字數 1733 閱讀 5144

表結構1

table

: t1

create

table: create

table

`t1` (

`a`

int(11) not

null

default'0

',`b`

int(11) not

null

default'0

',`c`

int(11) not

null

default'0

',`name`

varchar(20) default

null

, `createtime`

timestamp

notnull

default

current_timestamp,

primary

key(`a`,`b`,`c`)

) engine

=innodb default charset=utf8

表結構2

table

: t2

create

table: create

table

`t2` (

`id`

int(11) not

null

, `d1`

int(11) default

null

, `d2`

int(11) default

null

, `d3`

int(11) default

null

, `name`

varchar(20) default

null

, `createtime`

timestamp

notnull

default

current_timestamp,

primary

key(`id`)

) engine

=innodb default charset=utf8

constraint 外建名 foreign key(屬性1.1,屬性1.2,屬性1.3,...,屬性1.n) references t1(屬性2.1,屬性2.2,屬性2.3,...屬性2.n)

屬性1和屬性2的數目必須一致,並且屬性2是來自於主表的主鍵字段,並且如果主表是復合主鍵則屬性2欄位的取值是有限制的

1.

alter

table t2 add

constraint fk foreign

key(d1,d2,d3) references t1(a,b,c);

2.

alter

table t2 add

constraint fk foreign

key(d1,d2) references t1(a,b);

3.

alter

table t2 add

constraint fk foreign

key(d1) references t1(a);

foreign key(d1,d2,d3)中(d1,d2,d3)的順序無所謂

references t1(a,b,c)必需按照a,b,c的順序,必須先有a,才有b才有c

(b,c),(c),(a,c,b),(b,a,c)等都是錯誤的

超鍵 候選鍵 主鍵 外來鍵 聯合主鍵 復合主鍵

首先看看各種鍵的定義 超鍵 super key 在關係中能唯一標識元組的屬性集稱為關係模式的超鍵 只要有乙個鍵唯一,再隨便組其他的鍵,合起來叫主鍵 候選鍵 candidatekey 不含有多餘屬性的超鍵稱為候選鍵 最小的超鍵,id,身份證號 主鍵 primary key 關係型資料庫中的一條記錄中有...

MySQL 建立主鍵,外來鍵和復合主鍵的語句

1.建立主鍵語法 alter table table name add constraint pk name primary key 列名 2.建立外來鍵語法 alter table news info 子表名 add constraint fk news info news type 約束名 fo...

MySQL如何建立主鍵,外來鍵和復合主鍵

1.主鍵語法 建立時 create table sc studentno int,courseid int,score int,primary key studentno 修改時 alter table table name add constraint pk name primary key 列名...