做過林林總總各色各樣的專案,總結下常用的主鍵生成策略和方法。
主鍵和唯一識別符號不完全是乙個概念,通常在資料庫中,主鍵在單個表中是唯一的不可重複的。唯一識別符號可以在整個應用範圍內,或者跨應用,跨機器都可以做到唯一。
資料庫中經常會採用auto increment 欄位來做主鍵,每個廠商具體實現語法不同。
下列 sql 語句把 "persons" 表中的 "p_id" 列定義為 auto-increment 主鍵:
create table personsmysql 使用 auto_increment 關鍵字來執行 auto-increment 任務。(
p_id int not null auto_increment,
lastname varchar(255) not null,firstname varchar(255),
primary key (p_id)
)
預設地,auto_increment 的開始值是 1,每條新記錄遞增 1。
要讓 auto_increment 序列以其他的值起始,請使用下列 sql 語法:
alter table persons auto_increment=100
下列 sql 語句把 "persons" 表中的 "p_id" 列定義為 auto-increment 主鍵:
create table personsms sql 使用 identity 關鍵字來執行 auto-increment 任務。(
p_id int primary key identity,
lastname varchar(255) not null,firstname varchar(255)
)
預設地,identity 的開始值是 1,每條新記錄遞增 1。
要規定 "p_id" 列以 20 起始且遞增 10,請把 identity 改為 identity(20,10)
下列 sql 語句把 "persons" 表中的 "p_id" 列定義為 auto-increment 主鍵:
create table persons(
p_id numeric(10,0) identity not null,
lastname varchar(255) not null,firstname varchar(255)
)
在 oracle 中,**稍微複雜一點。
您必須通過 sequence 對建立 auto-increment 字段(該物件生成數字序列)。
請使用下面的 create sequence 語法:
create sequence seq_person上面的**建立名為 seq_person 的序列物件,它以 1 起始且以 1 遞增。該物件快取 10 個值以提高效能。cache 選項規定了為了提高訪問速度要儲存多少個序列值。minvalue 1
start with 1
increment by 1
cache 10
要在 "persons" 表中插入新記錄,我們必須使用 nextval 函式(該函式從 seq_person 序列中取回下乙個值):
insert into persons (p_id,firstname,lastname)values (seq_person.nextval,'lars','monsen')
uuid 通用唯一識別碼 (universally unique identifier)
uuid 的目的,是讓分布式系統中的所有元素,都能有唯一的辨識資訊,而不需要透過**控制端來做辨識資訊的指定。如此一來,每個人都可以建立不與其它人衝突的 uuid。在這樣的情況下,就不需考慮資料庫建立時的名稱重複問題。目前最廣泛應用的 uuid,即是微軟的 microsoft's globally unique identifiers (guids),而其他重要的應用,則有 linux ext2/ext3 檔案系統、luks 加密分割區、gnome、kde、mac os x 等等。
public classpublic static voidmain(string args)}
輸出結果:
b3181ad0-e2ce-4d0f-b5a3-eaff9d06f537
自定義編碼
也有很多系統會自定義編碼作為唯一識別符號,採用有意義的字元組合編碼,方便閱讀這理解其含義。
例如:員工編號+部門+角色+日期+時間戳
id='zhangsan-02-admin-20160101-1459242906180'
專案文件知多少(二)
十 uml設計說明 這個文件不常用,我一般會在兩種情況下要求專案做業務模型設計 1 業務相當複雜的時候。功能規格書更多的是從模組介面,操作方式上去闡述模組的功能,至於底層的資料模型還得用uml圖來輔助說明。uml圖有很多種,我們一般也只常用幾種,包括 用例圖,類圖,時序圖,其中類圖又最為重要。2 對...
專案文件知多少(四)
十八 客戶聯絡人表 這份文件的主要作用是留給客服人員做回訪。其次是專案組人員流動 離職 後,客戶關係不至於丟失。乙個專案在實施的過程中會接觸很多的人。有客戶高層,有中層領導,有專案負責人也有終端使用者。這些人員的姓名,性別,部門職務 辦公 手機 qq email等等相關資訊要記錄在文件中便於查詢。另...
開發趨勢 快速開發平台知多少?
開發趨勢 快速開發平台知多少?一 什麼是快速開發平台 簡而言之,就是可以使得開發更為快速的平台。當開發平台產生之後,雖然減少了程式設計人員大量的程式設計時間,但是很多開發平台的效果並不是很理想,比如說某些開發平台比較複雜 難以掌握 有的開發平台通用性比較差 有的開發平台在時間上並沒有得到改善 還有的...