投诉模块主要以投诉标识 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)二者在性能上并没有很大区别。