MySQL資料庫 多表關係

2021-08-27 11:42:47 字數 2883 閱讀 2941

多個表之間是有關係的,那麼關係靠誰來維護?

1.1 一對多關係

乙個表中的一天資料對應另乙個表中的多條資料,比如:

客戶和訂單:乙個客戶可以有多張訂單

分類和商品:乙個種類對應多種商品

部門和員工:乙個部門裡有多名員工 …

建表原則:在「多」的一方(客戶、商品、員工)建立乙個字段,字段作為外來鍵指向「一」的一方的主鍵.

例如: 乙個人有多本書

-- 書表

create

table

`book` (

`bid`

intnot

null,

`title`

varchar(40) not

null,

`author`

varchar(30) default

null,

`edition`

varchar(20) default

null,

`init_price`

double(6,2) not

null,

`id`

intnot

null,

primary

key (`bid`)

constraint

`fk_id_person`

foreign

key (`id`) references

`person` (`id`)

) engine=innodb default charset=utf8

-- 人類表

create

table

`person` (

`id`

intprimary

key,

`name`

varchar(30) not

null,

) engine=innodb default charset=utf8

1.2 多對多關係

乙個a物件可以對應多個b物件,乙個b物件可以對應多個a物件

例如:乙個學生可以選多門課程,一門課程有多名學生

建表原則:需要建立第三張表,中間表中至少兩個字段,這兩個字段分別作為外來鍵指向各自一方的主鍵.

-- 課程表

create

table

`lesson`(

`id`

intprimary

key,

`name`

varchar(40),

...)-- 學生表

create

table

`student`(

`uid`

intprimary

key,

`name`

varchar(40),

...)-- 關聯表

create

table

`s_l`(

`id`

int,

`uid`

int,

primary

key(id,uid),

constraint

`fk_id`

foreign

key (`id`) references

`lesson` (`id`),

constraint

`fk_uid`

foreign

key (`uid`) references

`student` (`uid`)

)

1.3 一對一關係

在實際的開發中應用不多.因為一對一可以建立成一張表.

建表原則:主鍵對應:讓一對一的雙方的主鍵進行建立關係.

例如 : 乙個使用者對應乙個使用者資訊表,乙個使用者資訊表對應乙個使用者

-- 使用者表

create

table

`users` (

`uid`

int(11) not

null auto_increment,

`username`

varchar(30) default

null,

`password`

varchar(30) default

null,

primary

key (`uid`)

)-- 使用者資訊表

create

table

`user_info` (

`id`

int(11) not

null,

`uname`

varchar(30) default

null,

`age`

int(11) default

null,

`gender`

varchar(3) default

null,

`birthday`

date

default

null,

`phone` long default

null,

`e_mail`

varchar(30) default

null,

`head_portrait` blob,

primary

key (`id`),

constraint

`fk_id`

foreign

key (`id`) references

`users` (`uid`)

)

資料庫多表關係

在生活中,物體有多種多樣的關聯關係,這也體現在資料表中。在資料表的設計中,不同表代表的實體和其他表都有以下三種關係 一對一 一對多 多對一 多對多。表與表的關係的合理程度,直接影響了專案的完成度和執行效能。1 一對一關係 例如 乙個人只有一張身份證 一張身份證只能對應乙個人。2 一對多 多對一關係 ...

資料庫(六) 多表關係

多表問題其實可以把它變成兩個表之間的關係 就像上一節我們提到的外來鍵,就是兩個表之間的關係 所以對於多表之間的關係,我們可以化繁為簡討論兩個表之間的關係 表與表之間的關係就好像數學函式的y和x的關係,也分為三種 一對一,多對一,多對多 怎麼說呢?其實上一節我們做的那個外來鍵表就是乙個多對一模式 怎麼...

MySQL資料庫操作(四) 多表之間的關係

個人部落格 haichenyi.com。感謝關注 1 一張表可以有多個外來鍵 2 外來鍵是表的主鍵,可以是別的表,也可以是本身 少見 3 外來鍵可以為null,可以重複,但是不能不存在,必須要查的到 建立語法foreign key 本表的列名 references 關聯的表名 關聯表的主鍵 建立乙個...