HA高可用集群
2016-01-14 11:33
495 查看
数据库中的主键
在数据库表中能够唯一识别每一条记录的一个字段或者多个字段的组合,称之为主键(Primary Key)。主键的主要作用将表中记录的数据和其他表中的数据进行关联。作为主键的需要满足如下的条件:
主键值所在的字段不能为null。
主键值具有唯一性,不能重复。
主键必须简洁,不要包含过多属性。
表中的主键通过数据库DDL语句设置的,主键又可以分为自然主键(Natrual Key)和代理主键。
1 自然主键
在数据库表中把具有业务逻辑含义的字段作为主键,称为"自然主键(Natural Key)"。例如,如果有一个employee表,保存某个公司所有员工的基本信息,其中员工的身份证号具有唯一性,所以可以使用身份证号作为这个表的主键,还可以通过两个或者多个字段的组合作为主键,称为"复合主键"。例如,在employee表中,因为姓名和出生日期字段组合后也具有唯一性,所以其组合也可以作为employee表的复合主键。
数据库中表与表通过主键与外键进行关联,修改表中的主键值会对数据库中数据的维护带来非常大的麻烦,应该尽量避免被修改,但是由于自然主键也表示了表中的业务逻辑信息,所以存在一定的被修改概率。例如:在某些运行系统中,如果数据库的某些表使用身份证号作为主键,则在最近的这次身份证号码从15位升级到18位的过程中,增加了不必要的系统升级的工作量。
在数据库设计中应该尽量避免使用自然主键,而使用代理主键。
2 代理主键
在数据库表中采用一个与当前表中逻辑信息无关的字段作为其主键,即代理主键这样的主键一般可以采用数据库中自动增长的生成机制自动生成主键值,字段名通常命名为"id"。
例如,在Oracle数据库中主键值即可采用序列生成;在MySQL和MS SQL Server数据库中代理主键的字段类型设置为自动增长(auto increment)类型,数据类型一般为整形(Integer)。
标识符属性
在数据库表中通过使用主键实现记录识别的唯一性,而Hibernate中的持久化对象则通过标识符(identifier)属性来实现唯一性识别。
Hibernate中的标识符属性也可以称为"Hibernate主键"它赋予每个持久化对象独一无二的数值,所以可以认为标识符属性是数据库主键的等价物。
在数据库表中能够唯一识别每一条记录的一个字段或者多个字段的组合,称之为主键(Primary Key)。主键的主要作用将表中记录的数据和其他表中的数据进行关联。作为主键的需要满足如下的条件:
主键值所在的字段不能为null。
主键值具有唯一性,不能重复。
主键必须简洁,不要包含过多属性。
表中的主键通过数据库DDL语句设置的,主键又可以分为自然主键(Natrual Key)和代理主键。
1 自然主键
在数据库表中把具有业务逻辑含义的字段作为主键,称为"自然主键(Natural Key)"。例如,如果有一个employee表,保存某个公司所有员工的基本信息,其中员工的身份证号具有唯一性,所以可以使用身份证号作为这个表的主键,还可以通过两个或者多个字段的组合作为主键,称为"复合主键"。例如,在employee表中,因为姓名和出生日期字段组合后也具有唯一性,所以其组合也可以作为employee表的复合主键。
数据库中表与表通过主键与外键进行关联,修改表中的主键值会对数据库中数据的维护带来非常大的麻烦,应该尽量避免被修改,但是由于自然主键也表示了表中的业务逻辑信息,所以存在一定的被修改概率。例如:在某些运行系统中,如果数据库的某些表使用身份证号作为主键,则在最近的这次身份证号码从15位升级到18位的过程中,增加了不必要的系统升级的工作量。
在数据库设计中应该尽量避免使用自然主键,而使用代理主键。
2 代理主键
在数据库表中采用一个与当前表中逻辑信息无关的字段作为其主键,即代理主键这样的主键一般可以采用数据库中自动增长的生成机制自动生成主键值,字段名通常命名为"id"。
例如,在Oracle数据库中主键值即可采用序列生成;在MySQL和MS SQL Server数据库中代理主键的字段类型设置为自动增长(auto increment)类型,数据类型一般为整形(Integer)。
标识符属性
在数据库表中通过使用主键实现记录识别的唯一性,而Hibernate中的持久化对象则通过标识符(identifier)属性来实现唯一性识别。
Hibernate中的标识符属性也可以称为"Hibernate主键"它赋予每个持久化对象独一无二的数值,所以可以认为标识符属性是数据库主键的等价物。
相关文章推荐
- LVS原理详解及部署之五:LVS+keepalived实现负载均衡&高可用
- web开发性能优化---项目架构篇
- 去除优酷、土豆、酷六、百度、奇艺、CNTV、新浪、乐视、搜狐等视频网站15秒广告的方法
- 2015年12月钓鱼网站域名涉及注册商分析:阿里居首
- J2EE开发环境的搭建
- 域名配置_网站邮箱设置_json学习_2016.01.13回顾
- HTML5前端(移动端网站)性能优化指南
- 原子性、唯一性的软件架构问题
- 数据架构
- 记录安卓开发的好网站
- 这些优化 Drupal 网站速度的超简单办法,你忽略了多少?
- SAR数据下载网站
- 学习网站收录
- 做一个“代码模块”交易的网站
- 我所熟悉的网站负载均衡技术
- Caching-缓存架构与源码分析
- 大型网站架构系列:20本技术书籍推荐
- 分库分表策略的可实现架构
- QEMU内在:整体架构和线程模型
- 秒杀系统架构分析与实战