1. 程式人生 > >方立勳_30天掌握JavaWeb_資料庫表設計

方立勳_30天掌握JavaWeb_資料庫表設計

定義外來鍵約束
丈夫、妻子表:
妻子用一個husband_id來說明wife丈夫是哪個。

這裡寫圖片描述

一對多物件表設計

部門、員工表:
一個部門可以有多個員工,員工表通過department_id說明屬於哪個部門。

這裡寫圖片描述

一對多或多對一的物件存到資料庫時,表的設計方案
部門和員工
create table department
(
id int primary key,
name varchar(40)
);

create table employee
(
id int primary key,
name varchar(40),
salary decimal(8,2),
department_id int,
constraint department_id_FK foreign key(department_id) references department(id)
);

多對多物件表關係設計

教師、學生表:
通過一張中間表teacher_student來說明關係。

這裡寫圖片描述

多對多物件的表的設計(老師和學生)
create table teacher
(
id int primary key,
name varchar(40),
salary decimal(8,2)
);

create table student
(
id int primary key,
name varchar(40)
);

create table teacher_student
(
teacher_id int,
student_id int,
primary key(teacher_id,student_id),
constraint teacher_id_FK foreign key(teacher_id) references teacher(id),
constraint student_id_FK foreign key(student_id) references student(id)
);

一對一物件表設計(具體主從關係)

人、身份證表:
省份證是從表,直接用主鍵id作為外來鍵。

這裡寫圖片描述

一對一的物件的資料庫設計
create table person
(
id int primary key,
name varchar(40)
);

create table idcard
(
id int primary key,
city varchar(40),
constraint id_FK foreign key(id) references person(id)
);

自連線的表設計

家譜管理系統。
打個比如:你爺爺生了你爸爸,你爸爸生你,你又生了孩子。
Person物件:id、姓名、Person(記住爸爸)、Children(記住孩子)。

這樣的表設計,直接存入了一張表,用一個欄位parent_id來說明。parent_id 來自id,需要加外來鍵約束,不能加非空約束

這裡寫圖片描述

create table person
(
id int primary key,
name varchar(40),
parent_id int,
constraint parent_id_FK foreign key(parent_id) references person(id)
);

當然顯示實際開發中,有的為了查詢效率,並不會這麼設計,可能會去增加冗餘欄位加快查詢速度。