專案開發主鍵生成知多少

2021-07-10 19:57:31 字數 2444 閱讀 2248

做過林林總總各色各樣的專案,總結下常用的主鍵生成策略和方法。

主鍵和唯一識別符號不完全是乙個概念,通常在資料庫中,主鍵在單個表中是唯一的不可重複的。唯一識別符號可以在整個應用範圍內,或者跨應用,跨機器都可以做到唯一。

資料庫中經常會採用auto increment 欄位來做主鍵,每個廠商具體實現語法不同。

下列 sql 語句把 "persons" 表中的 "p_id" 列定義為 auto-increment 主鍵:

create table persons

(p_id int not null auto_increment,lastname varchar(255) not null,

firstname varchar(255),primary key (p_id))

mysql 使用 auto_increment 關鍵字來執行 auto-increment 任務。

預設地,auto_increment 的開始值是 1,每條新記錄遞增 1。

要讓 auto_increment 序列以其他的值起始,請使用下列 sql 語法:

alter table persons auto_increment=100

下列 sql 語句把 "persons" 表中的 "p_id" 列定義為 auto-increment 主鍵:

create table persons

(p_id int primary key identity,lastname varchar(255) not null,

firstname varchar(255)

)

ms sql 使用 identity 關鍵字來執行 auto-increment 任務。

預設地,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

minvalue 1

start with 1

increment by 1

cache 10

上面的**建立名為 seq_person 的序列物件,它以 1 起始且以 1 遞增。該物件快取 10 個值以提高效能。cache 選項規定了為了提高訪問速度要儲存多少個序列值。

要在 "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等等相關資訊要記錄在文件中便於查詢。另...

開發趨勢 快速開發平台知多少?

開發趨勢 快速開發平台知多少?一 什麼是快速開發平台 簡而言之,就是可以使得開發更為快速的平台。當開發平台產生之後,雖然減少了程式設計人員大量的程式設計時間,但是很多開發平台的效果並不是很理想,比如說某些開發平台比較複雜 難以掌握 有的開發平台通用性比較差 有的開發平台在時間上並沒有得到改善 還有的...