[轉載]uniqueidentifier數據類型在系統設計中的應用

 

什麼是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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章