《MySQL——数据表设计三大范式》
目錄
- 數據表設計范式
- 第一范式
- 第二范式
- 第三范式
數據表設計范式
第一范式
數據表中的所有字段都是不可分割的原子值。
字段值還可以繼續拆分的,就不滿足第一范式,如下:
下面這個,更加貼合第一范式:
范式設計得越詳細,對某些實際操作可能會更好,但并非都有好處,需要對項目的實際情況進行設定。
第二范式
在滿足第一范式的前提下,其他列都必須完全依賴于主鍵列。如果出現不完全依賴,只可能發生在聯合主鍵的情況下:
我們設計一個訂單表:
實際上,在這張訂單表中,product_name 只依賴于 product_id ,customer_name 只依賴于 customer_id 。也就是說,product_name 和 customer_id 是沒有關系的,customer_name 和 product_id 也是沒有關系的。
這就不滿足第二范式。
下面將主表拆分:
拆分之后,myorder 表中的 product_id 和 customer_id 完全依賴于 order_id 主鍵,而 product 和 customer 表中的其他字段又完全依賴于主鍵。滿足了第二范式的設計。
第三范式
在滿足第二范式的前提下,除了主鍵列之外,其他列之間不能有傳遞依賴關系。
如下,我們在myorder 中添加customer_phone
發現,表中的 customer_phone 有可能依賴于 order_id 、 customer_id 兩列,也就不滿足了第三范式的設計:其他列之間不能有傳遞依賴關系。
我們應該這樣設計:
修改后就不存在其他列之間的傳遞依賴關系,其他列都只依賴于主鍵列,滿足了第三范式的設計!
總結
以上是生活随笔為你收集整理的《MySQL——数据表设计三大范式》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 玫瑰与饼干剧情介绍
- 下一篇: 《MySQL——38道查询练习(无连接查