1. 程式人生 > 資料庫 >node 資料庫設計 三正規化

node 資料庫設計 三正規化

一、資料庫設計

通常我們用的較多的為第一正規化(1NF),第二正規化(2NF),第三正規化(3NF)

1)第一正規化(1NF) :要求資料庫表的每一列都是不可分割的原子項資料

姓名 性別 聯絡方式
孫鬆 手機:13012345678 QQ:87625222 wx:sx23232 email:[email protected]

以上表結構就違反了第一正規化,應拆分為:

姓名 性別 手機 QQ 微信
孫鬆 13012345678 87625222 sx23232

2)第二正規化(2NF):屬性必須完全依賴主鍵

實體:現實世界中存在的可以區分的客觀的事物。例: 孫鬆、中公教育公司。

屬性:描述實體的特徵資訊。例:男,姓名,身份證號,指紋,身高,體重,愛好,,,

鍵:資料庫中基本概念。鍵指可以區分實體的屬性。例:身份證號、姓名、指紋,,

主鍵:能夠唯一區別實體的鍵。 例:身份證號

身份證號 姓名 性別 學號 選修課程號 選修成績
610200201812 孫鬆 10001 web01 98

以上表結構不符合第二正規化,應拆分為:

身份證號 姓名 性別
610200201812 孫鬆
學號 選修課名 選修課成績 班主任姓名
10001 語文 98 王老師

例如:

商品號 商品名 價格 贈品編號 贈品名稱 贈品規格 訂單號 數量 地址 下單時間
a01 iphone12 8888 z001 手機殼 紅色 A00120211 2 西安 20201104 9:10

以上可以拆分三個表: 商品表、贈品表、訂單表

3) 第三正規化(3NF):屬性不能傳遞依賴於主鍵

描述:滿足第二正規化前提下,如果某一屬性依賴於其他非主鍵屬性,而其他非主鍵屬性又依賴於主鍵,那麼這個屬性就屬於間接依賴於主鍵。

父親 兒子 女兒 女兒的芭比娃娃 女兒的小熊

通俗理解: 一張表中最多隻存在2層同類資訊

以上可拆分為:

父親 兒子 女兒
女兒 女兒的芭比娃娃 女兒的小熊

4) 反三正規化

​ 完全沒有冗餘的資料庫設計可以做到,但是沒有冗餘的資料庫未必是最好的,有時候為了查詢效率,就必須適當降低正規化標準,保留一些冗餘資料。具體做法:在概念設計時遵守三正規化標準,但是在具體專案資料庫實施時根據情況適當降低正規化標準,保留一些冗餘資料,達到以空間換時間的目的。