一 什麼是uniqueidentifier?
Uniqqueidentifier 是全域唯一的標識
二 UniqueIdentifier 資料類型的列如何賦值?
1 使用 NewID()函數 來實現
2 直接將字串的常量轉化成這樣的格式 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
舉例:6F9619FF-8B86-D011-B42D-00C04FC964FF 為有效UniqueIdentifier資料
3 直接賦於32位的十六位元據
舉例 0xffffffff00000000ffffffff00000000
三 UniqueIdentifier 資料類型 資料實際是怎麼在資料庫中儲存的?
UniqueIdentifier 資料類型儲存實際的資料是16個位元組的二進位值,
UniQueIdentifier 可以轉化成實際的字串型和位元據類型
四 NewID()函數是如何產生唯一的UniqueIdentifier 值的呢?
NewID()函數是從他們的網卡上的標識數字和CPU時鐘的唯一的數字產生新的UniqueIdentifier資料 ,這個資料和GUID是一樣的每台電腦能產生全球唯一的值
這樣在多台電腦和多網路之間產生具有唯一性的標識符
五 使用 Uniqueidentifier資料類型的主要的優點
Uniqueidentifier 資料類型主要的優點是在使用newid函數產生值的時候是可以保證值的全球唯一性
可以唯一的標識單行的記錄 對於多庫(尤其是多機器,多網段的資料庫的複製)來將比IDEntity來的更有效
其次在使用Identity的情況下,我們對自動產生的值是不能修改的,而Uniqueidentifier資料類型是可以隨時修改的
六 使用Uniqueidentifier的資料類型的缺點
1 對於產生的Uniqueidentifier 類型的值來講 ,是無序
在正常顯示相關的資料資訊的時候,返回的資訊是無序的
對於 Identity 為標識的資料顯示的時候,預設的情況下是根據添加記錄的順序來顯示的
這樣,對於uniqueidentifier為主鍵的資訊集 ,還是需要一個預設標識排序的欄位。
2 對於Uniqueidentifier 欄位來將資料的實際的資訊為16個位元組,相對來將比Identity來講 大的多,相對來將 儲存空間和查詢的效率會降低很多的。
七 在系統資料庫的設計中我們如何對Uniqueidentifier,Identity ,和可標識的記錄屬性(有實際的含義的資訊)作為主鍵 ,這三種方式 進行取捨
以屬性為主鍵的系統設計情況
在系統設計的過程中
單條資訊中包含可以表示唯一性的屬性(一般不能太多3個以內)而且這樣的屬性是必要欄位。在記錄生存周期內一般是不進行改動的,表一般多於50個這樣層級的系統
以屬性為主鍵 ,這樣的方式還是最佳的
舉例: 關於學生的管理資訊系統 以學生的學號為主鍵
以Uniqueidentifier 列為主鍵的情況
在需要多個資料庫之間,多個網段之間需要進行資料庫的複製時,我們就需要在每一個唯一的標識來區別每一個單條記錄,在沒有合適的屬性來做主鍵的情況下可以用Uniqueidentifier列來產生主鍵
以 Identity為主鍵的情況
不需要資料庫的複製,和系統比較小的情況下(50表以內)可以用 Identity列來產生主鍵 ,適合於快速開發。
原文地址:http://www.cnblogs.com/macroxu-1982/archive/2007/03/22/683852.html