複雜型別的物件有幾種表現形態:
以部門和員工的關係來說明一對多或多對一的物件是怎麼儲存到資料庫表中的。
資料庫表的設計的原則:先不要去管這些物件的關係,看某個物件有什麼基本屬性,然後設計乙個表來儲存此物件的基本資料。在資料庫裡面怎麼去保證資料往資料庫裡面存的時候,關係不丟呢?這裡面有乙個原則,記住一句話——在多的一方加外來鍵描述資料之間的關係。
資料庫表的設計方案如下:
資料庫表的sql語句如下:
d_employee表
create table d_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)
);
以老師和學生的關係來說明多對多的物件是怎麼儲存到資料庫表中的。
資料庫表的設計的原則:先不要去管這些物件的關係,看某個物件有什麼基本屬性,然後設計乙個表來儲存此物件的基本資料。在資料庫裡面怎麼去保證資料往資料庫裡面存的時候,關係不丟呢?需要加乙個中間表來描述資料的關係。
資料庫表的設計方案如下:
資料庫表的sql語句如下:
student表
create table student
( id int primary key,
name varchar(40)
);
teacher_student表(中間表)
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)
);
注意:關於中間表的設計,在設計主鍵時,應將teacher_id,student_id這2列作為聯合主鍵,即這2列值加在一起不能重複。
以身份證管理系統來說明一對一的物件是怎麼儲存到資料庫表中的。
資料庫表的設計的原則:先不要去管這些物件的關係,看某個物件有什麼基本屬性,然後設計乙個表來儲存此物件的基本資料。一對一的物件有乙個主從關係,主可以沒有從,但從不能沒有主。在身份證管理系統中,一對一的關係表現為乙個人只能有一張身份證,一張身份證只能屬於乙個人;主是人,從是身份證,一對一的物件有乙個主從關係表現為人可以沒有身份證,但身份證不能不屬於人。
資料庫表的設計方案如下:
資料庫表的sql語句如下:
idcard表
create table idcard
( id int primary key,
city varchar(40),
constraint id_fk foreign key(id) references person(id)
);
以家族管理系統來說明自連線表的設計。
資料庫表的設計方案如下:
注意:自連線,外來鍵列不能加非空約束。
資料庫表的sql語句如下:
面試題:乙個無限極分類的數的資料庫表的設計(請設計乙個無限極分類的表)。
解:以乙個商品分類表來說明怎樣去設計乙個無限極分類的表。這裡用圖來說明:
如果不使用資料庫的三大正規化建表,而是設計一張表,把所有資料存到一張表裡,那麼會出現冗餘資料,但是查詢效能很好,不需要查多表。
例如,在多對多物件的表的設計中,我們可以設計一張表,把所有資料存到一張表裡。
資料庫切分「基本思想」 「常見問題」
優點 分庫降低了單點機器的負載 分表提高了資料操作的效率,尤其是write操作的效率 1.垂直切分 適用場景 表多資料多。特點 規則簡單 業務邏輯清晰 業務耦合度非常低。根據相同業務使用的表放到相同的資料庫。在垂直切分出的表聚集內,找出 根元素 按 根元素 進行水平切分,也就是從 根元素 開始,把所...
資料庫Sharding的基本思想和切分策略
一 基本思想 sharding的基本思想就要把乙個資料庫切分成多個部分放到不同的資料庫 server 上,從而緩解單一資料庫的效能問題。不太嚴格的講,對於海量資料的資料庫,如果是因為表多而資料多,這時候適合使用垂直切分,即把關係緊密 比如同一模組 的表切分出來放在乙個server上。如果表並不多,但...
資料庫Sharding的基本思想和切分策略
本文著重介紹sharding的基本思想和理論上的切分策略,關於更加細緻的實施策略和參考事例請參考我的另一篇博文 資料庫分庫分表 sharding 系列 一 拆分實施策略和示例演示 一 基本思想 sharding的基本思想就要把乙個資料庫切分成多個部分放到不同的資料庫 server 上,從而緩解單一資...