mysql数据库设计学习---数据库设计规范化的五个要求
一:表中應該避免可為空的列;
二:表不應該有重復的值或者列;
三:?表中記錄應該有一個唯一的標識符?
在數據庫表設計的時候,數據庫管理員應該養成一個好習慣,用一個ID號來 唯一的標識行記錄,而不要通過名字、編號等字段來對紀錄進行區分。每個表都應該有一個ID列,任何兩個記錄都不可以共享同一個ID值。另外,這個ID值最 好有數據庫來進行自動管理,而不要把這個任務給前臺應用程序。否則的話,很容易產生ID值不統一的情況。
另外,在數據庫設計的時候,最好還能 夠加入行號。如在銷售訂單管理中,ID號是用戶不能夠維護的。但是,行號用戶就可以維護。如在銷售訂單的行中,用戶可以通過調整行號的大小來對訂單行進行 排序。通常情況下,ID列是以1為單位遞進的。但是,行號就要以10為單位累進。如此,正常情況下,行號就以10、20、30依次擴展下去。若此時用戶需 要把行號為30的紀錄調到第一行顯示。此時,用戶在不能夠更改ID列的情況下,可以更改行號來實現。如可以把行號改為1,在排序時就可以按行號來進行排 序。如此的話,原來行號為30的紀錄現在行號變為了1,就可以在第一行中顯示。這是在實際應用程序設計中對ID列的一個有效補充。這個內容在教科書上是沒 有的。需要在實際應用程序設計中,才會掌握到這個技巧。
四:數據庫對象要有統一的前綴名?
一個比較復雜的應用系統,其對應的數據庫表往往以千計。若讓數據庫管理員看到對象名就了解這個數據庫對象所起的作用,恐怕會比較困難。而且在數據庫對象引用的時候,數據庫管理員也會為不能迅速找到所需要的數據庫對象而頭疼。
為此,筆者建立,在開發數據庫之前,最好能夠花一定的時間,去制定一個數據庫對象的前綴命名規范。如筆者在數據庫設計時,喜歡跟前臺應用程序協商,確定 合理的命名規范。筆者最常用的是根據前臺應用程序的模塊來定義后臺數據庫對象前綴名。如跟物料管理模塊相關的表可以用M為前綴;而以訂單管理相關的,則可 以利用C作為前綴。具體采用什么前綴可以以用戶的愛好而定義。但是,需要注意的是,這個命名規范應該在數據庫管理員與前臺應用程序開發者之間達成共識,并 且嚴格按照這個命名規范來定義對象名。
其次,表、視圖、函數等最好也有統一的前綴。如視圖可以用V為前綴,而函數則可以利用F為前綴。如此數據庫管理員無論是在日常管理還是對象引用的時候,都能夠在最短的時間內找到自己所需要的對象。
五:盡量只存儲單一實體類型的數據?
這里將的實體類型跟數據類型不是一回事,要注意區分。這里講的實體類型 是指所需要描述對象的本身。筆者舉一個例子,估計大家就可以明白其中的內容了。如現在有一個圖書館里系統,有圖書基本信息、作者信息兩個實體對象。若用戶 要把這兩個實體對象信息放在同一張表中也是可以的。如可以把表設計成圖書名字、圖書作者等等。可是如此設計的話,會給后續的維護帶來不少的麻煩。
如當后續有圖書出版時,則需要為每次出版的圖書增加作者信息,這無疑會增加額外的存儲空間,也會增加記錄的長度。而且若作者的情況有所改變,如住址改變 了以后,則還需要去更改每本書的記錄。若這個作者的圖書從數據庫中全部刪除之后,這個作者的信息也就蕩然無存了。很明顯,這不符合數據庫設計規范化的需 求。
遇到這種情況時,筆者建議可以把上面這張表分解成三種獨立的表,分別為圖書基本信息表、作者基本信息表、圖書與作者對應表等等。如此設計以后,以上遇到的所有問題就都引刃而解了。
總結
以上是生活随笔為你收集整理的mysql数据库设计学习---数据库设计规范化的五个要求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工信部终于出手!整治APP广告“乱跳转”
- 下一篇: 11 个重要的数据库设计规则