是否要有"識別規格"來當唯一識主鍵的需求是:見人見智的事.
但是一個TABLE 中最好是有可以用來識別資料的唯一主鍵.
用來識別的唯一主鍵也可以是複合欄位.
以鼎新的ERP系統為例.
鼎新ERP系統的TABLE中完全沒有用到"識別規格"來當唯一主鍵.
如單據的單頭:以單別+單別為唯一鍵值. 單身部份再加項次做為唯一鍵值.
TABLE中用唯一鍵值的功能主要有二個:
1.建立索引,以加快搜尋資料的速度.
2.避免資料重複.如果沒有唯一鍵值的欄位存在,當資料不小心重複時,就只能用DELETE的語法將相同的資料一次全部刪除.
而我們之前的前輩是說 資料表要有"識別規格"的主鍵比較好
前輩的建議是對的. identity翻作識別規格實有誤導之嫌, 實際上是自動序號的作用, 為什麼您的前輩要建議用identity做主鍵, 先從主鍵說起, 通常建立主鍵有三種常用方式:
1.資料庫的自動序號: 也就是MSSQL的identity, 或MySQL的auto_increment,...等
2.Universal Unique IDentification, UUID: 寰宇唯一碼, 通用唯一識別碼,..
3.商業邏輯編碼: 如商品分類, 單別,,,加上序號來編碼.
這三種方式中, 自動序號(identity, auto_increment)是最簡易的, UUID是最穩定的, 這兩者保證儲存資料不會因為主鍵重複而中斷, 然而商業邏輯可能會有變化, 商業邏輯可能錯誤, 導致需改變商業邏輯編碼方式. 您的問題是關於自動序號(identity), 為什麼要用自動序號當主鍵值? 主因有:
鼎新ERP系統的TABLE中完全沒有用到"識別規格"來當唯一主鍵.
我想您看過鼎新的資料結構...