浅谈数据库三大范式的理解
首先聲明一下,我的這個回答是個人工作總結,不適合考試答題昂。
歡迎關注我的博客。
前言:數據庫設計其實不僅僅限制于三個范式,往下其實還有很多種,但對于大多數人來說,你又不搞科研,不造飛機大炮,掌握三大范式在工作中已經足夠用了。
想法:數據庫里有什么?說白了數據庫里邊不就是一張一張的關系數據表嗎?只是表與表之間靠主外鍵關聯而已。所以,你就把他理解為一張張的資料,一張資料里存著找到另一張資料的唯一線索,這個線索就是關系。
下面進入正題,也就是玩法:
1NF: 列的原子性,就是每一列不能再分了。就比如性別要么男要么女,這種的就叫不能再分了,但是地址不行,你不能把一連串的地址寫到一起,要分為省、市、縣、縣的那個樓或者大廈什么的。
這是第一范式,不用問太多為什么,就像你買皮膚要充錢一樣,你問人家就能免費給你嗎?這是鐵律。
2NF:有主鍵和副鍵之分,副鍵完全依賴于主鍵,主鍵是唯一的標識,代表著這個對象,而其他副鍵都是用來描述對象的。通過主鍵找到這個對象的整體信息。
3NF:這個其實工作久了就自然而然明白了。消除傳遞依賴,說白了就是有副鍵之間有關系的時候,最好另建一張表。這樣就沒有那么多冗余數據了。
就比如說家居有樣式,你還要整個樣式得分,樣式評級什么的,就得另加一張表來描述樣式的了。一個表對應一個類。A就是A,B就是B,C就是C。
還有就是存在1對多,多對多這種關系的時候,也要再分表,要不然數據冗余會特別大。100條數據還差點,1億數據量就gg了。
三大范式沒什么,就是這么設計比較好,會讓你的數據更具有層次感。跟磁盤分區是一個道理。
?
備注:以上僅供參考,個人開發總結。希望對你有幫助,讓我們共同進步。
孰能無過,如有錯誤和疑問歡迎留言。
?
轉載于:https://www.cnblogs.com/onthewaytogrowth/p/11222084.html
總結
以上是生活随笔為你收集整理的浅谈数据库三大范式的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring boot 与redis
- 下一篇: Linq 左连接 left join