7 分鐘閱讀

SQL-第一正規化

關聯式資料庫

到底什麼是關聯式?

指的是相互關聯的欄位,一同描述一個事物

但是要如何達成這個手段?

我們需要的是,必要的資訊描述

邏輯清晰的資料並且資料足夠分明的小單位

這些欄位也稱為單元性

單元性

已經收集好我們的需要的資料

但是如何可以界定所謂的小單位呢

以生日來說 2000/05/14

字面上的小單位直覺是

| year | month | day | | —- | —- |—- |

這樣子可以不過也不是最正確的

因為根本不知道生日是用在什麼地方的

  1. 朋友
    • 年月日放在同一個欄位叫生日,因為也不用一直看朋友是 幾年生幾月幾日
  2. 戶政系統
    • 這邊就可以分成年月日三個欄位,因為很常需要較 細微的資料

看似抽象,仔細思考,其實很實際

單元性也幫助我們有效率去做查詢,你肯定不會想要每次都寫一長串 又沒效率的指令

正規化的規則

已經知道了單元性

符合單元性的值又要符合兩個條件

  1. 不會有多個相同類型的值

    check-up date
    eye 2023-05-30, 2023-06-07, 2023-06-17
  2. 不會有相同資料的欄位

    check-up date1 date2 date3
    eye 2023-05-30 2023-06-07 2023-06-17

帶來哪些好處

  1. 得到的搜索資料會更準確
  2. 因減少重複的資料,資料庫會更精簡
  3. 搜尋的母體變少,查詢速度更快

資料從小做起,當它長成大人,也不會失去控制

正規化還未結束

  1. 資料符合單元性
  2. 每筆資料必須有一個主鍵(Primary Key)

PRIMARY KEY 主鍵

  • 獨一無二 值必須不重複,當然也不可以NULL,因為其他資料 可以是NULL

  • 永遠不會修改 主鑑就像是人的身份證字號,永遠不會修改,不然就會混亂

  • 簡單明瞭 主鑑越簡單明瞭,就可讓資料庫比較小,還可以加快查詢速度

幫加入資料表加入主鍵

id check_up date
1 eye 2023-05-30
2 eye 2023-06-07

id 是主鍵,這是我們加入的人造主鍵

如此就完成正規化了

自動增加

主鍵如果是要自己增加數字,是非常麻的事情 還好,加上關鍵字AUTO_INCREMENT可以幫你依序增加數字

新增主鍵

關鍵字是PRIMARY KEY

CREATE TABLE health
(
   id INT NOT NULL AUTO_INCREMENT,
   check_up VARCHAR(20),
   date DATE,
   PRIMARY KEY(id)
)

如果你幫已經存在的資料表新增主鍵 可以使用ALTER指令

ALTER TABLE health2
ADD COLUMN id INT NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY(id)

標籤:

更新時間: