投訴模塊主要以投訴標識 prosecute _id和投訴號 prosecute_no爲主,mysql
constraint PK_ PROSE _ CASERPT primary key (PROSECUT_ID)或者sql
ALTER TABLE PROSE_CASERPT CONSTRAINT PK_ PROSE _ CASERPT PRIMARY KEY ( PROSECUT_ID );數據庫
create unique index UNQ_ PROSE _ CASE_CC on PROSE_CASERPT (
PROSECUT _NO ASC
);性能
數據表主鍵至關於書的頁碼。spa
索引至關於書的目錄,有了目錄咱們能夠很快的知道這本書的基本內容和結構,數據索引也同樣,能夠經過它很快查詢到想要的結果,而不須要進行全表掃描。 。orm
主鍵是一種約束,惟一索引是一種索引,二者在本質上是不一樣的。索引
主鍵建立後必定包含一個惟一性索引,惟一性索引並不必定就是主鍵。引用
惟一性索引列容許空值,而主鍵列不容許爲空值。im
主鍵列在建立時,已經默認爲空值 + 惟一索引了。數據
主鍵能夠被其餘表引用爲外鍵,而惟一索引不能。
一個表最多隻能建立一個主鍵,但能夠建立多個惟一索引。
主鍵更適合那些不容易更改的惟一標識,如自動遞增列、身份證號等。該模塊的 投訴標識 prosecute _id 就屬於這種。所以,所選的主鍵必須遵照建立惟一索引的規則。
通常和業務無關的字段(好比mysql的自增字段)做爲主鍵,而將業務相關的字段做爲unique key
好比:身份證號能夠肯定一我的的身份,可是不能用來把他做爲主鍵。
假設有一張人員表,還有100張表關聯到這張表。假如用身份證作主鍵,前幾年升級身份證,15位變18位,那麼你有101個字段須要從新設置,沒修改一我的員的身份證,就要附帶更新100張表。
而所謂的無關,就是用自增字段或者UUID,或者相似Oracle rowid這樣不包含任何業務信息,只表明這條記錄在這張表裏面位置的信息做爲主鍵。不管業務如何變化,這個字段都不須要作修改(頂多由於業務量變大,修改字段長度,但不須要修改數據自己)。
其實倒不反對業務主鍵,但只指單一字段作主鍵,好比不少登錄系統,常就用loginName作用戶表主鍵,並且這麼作很方便,我以爲只要是值惟一併且不改動的 字段就能夠作主鍵,可是不太可能,;
建立表時指定的 PRIMARY KEY 約束列隱式轉換爲 NOT NULL。
主鍵是邏輯鍵,索引是物理鍵,意思就是主鍵不實際存在,而索引實際存在在數據庫中,主鍵通常都要建,主要是用來避免一張表中有相同的記錄,索引通常能夠不建,但若是須要對該表進行查詢操做,則最好建,這樣能夠加快檢索的速度。
能夠爲惟一索引增長一個非空約束
ALTER TABLE PROSE_CASERPT UNQ_ PROSE _ CASE_CC NOT NULL;
若是建表的時候 prosecute_no 爲 NOT NULL 就不須要建非空約束了。
————————————————————————————————————————————————————————————————————————————————
同理
惟一性索引unique index和通常索引normal index最大的差別就是在索引列上增長了一層惟一約束。添加惟一性索引的數據列能夠爲空,可是隻要存在數據值,就必須是惟一的。 聯繫:(1)Unique Index就是額外添加的惟一性約束。該約束嚴格的保證索引列的取值惟一性,這在一些數據列上的業務約束實現是很重要的功能。好比一個數據列,不能做爲主鍵,並且容許爲空,可是業務上要求惟一特性。這時候使用惟一性索引就是最好的選擇。 (2)二者在性能上並沒有很大區別。