2017年10月11日 星期三

資料表規劃再叮嚀

資料表規劃再叮嚀:
一般人在設計資料表時,最容易犯的錯誤包括下列各項:
1.      一個資料表內擁有同質性差距甚大的資料主題。例如,學生與老師基本資料、或是客戶與員工基本資料擺在同一個資料表中。
2.      資料表中擁有一些無意義的欄位。例如,區域號碼欄位應該與電話號碼欄位合併即可。
3.      建立多餘不必要的欄位。例如,員工年齡欄位(不必要field)可以在需要資訊時,經由出生日期欄位與目前日期的年份彼此相減即可求得。
意即,運算所需的來源資料可以儲存在資料表中,但運算所得的結果資料不應儲存在資料表中。
4.      資料表定義過多性質類似(或相同)的欄位。例如,第1-3次月考的數學與英文成績,用了Math1Math2Math3Eng1Eng2Eng36個欄位,事實上只需定義MathEng與月考別的欄位,共3個欄位即可。
5.      在兩個同關聯的資料表內,重複建立相同欄位。例如,訂單與客戶資料表內,重複建立客戶名稱與客戶地址,造成若欲更改名稱或地址時的效率與系統資源的浪費。

※全球性獨一識別碼
如果欄位內要存放「全球性獨一識別碼」(GUID),則應採用uniqueidentifier資料型態。GUID是一個16位元組大小的二進位數值,其格式中每一個x介於09af間的16進位數值:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

如果您希望SQL Server自動替uniqueidentifier資料型態產生新的GUID,意即當新增資料記錄時使用者不需自行鍵入GUID而完全由SQL Server自動產生的話,只需以NEWID函數作為uniqueidentifier資料型態之欄位的預設值(Default)即可。可由兩種做法達成:
1.      SQL Server Enterprise Manager建立資料表結構時,於uniqueidentifier資料型態欄位之「預設值」直欄的文字方塊中鍵入newid()即可。
2.      使用CREATE  TABLE命令建立資料表時,可使用DEFAULT引數將uniqueidentifier資料型態之欄位的預設值設定成NEWID函數即可。
範例:
/* 檔案名稱:Demo52.sql */
   CREATE TABLE ComputerManager
   (
   ComputerID uniqueidentifier DEFAULT NEWID(),
   ComputerName varchar(16)
   )



沒有留言:

用頭腦去思考,不要人云亦云才好, 宗教信徒就是依賴與自私心態(求東求西)的人, 光是這點就很容易暴露弱點了, 難怪seafood吃飽飽,哈哈。 續上, 除了依賴與自私心態(兩者都是人性)之外。 另外也有很大一部份的人,是人云亦云的思考邏輯, 所以宗教才能譁眾取寵。