2.2主键介绍

数据库Database

Table(表):关系数据库中的【关系】指的就是表。

列(Column)、字段(Field)、行(Row)元组

用表格格式化数据

主键(Primary Key)

主键作用:唯一标识表中的一条记录。

特点:

1>不能重复。

2>主键不能为空,不允许为null。

选择主键的时候,根据列存储的信息不同,可以分为:

1>业务主键(有实际的意义)

2>逻辑主键(没有实际的意义,推荐使用逻辑主键)

一个表可以有几个主键呢?一个表中只能有一个主键。当建立主键后,默认会建立索引,而实际数据在磁盘上存储的顺序和主键列的顺序是一致的,因为实际的物理顺序只有一种,所以一个表中只能有一个主键。

选择什么样的列作为主键:

1.不允许为空的列。

2.没有重复的列。

3.与实际业务没有关系的列(逻辑主键)。

4.稳定的列。(列中保存的数据不经常改变)。

5.选择单列作为主键。(当通过多列共同唯一标识表中一条记录的时候,此时可以选择多列来工作组成一个主键,这种主键叫做,组合主键、复合主键、联合主键)一般不推荐使用组合主键。

6.尽量选择数字类型作为主键,不要选择字符串,或者数据类型比较大的列作为主键。(选择比较小的列作为主键)

当创建完毕一张表的时候,可以不设主键吗?可以,但是建议每张表都应该有一个主键。

时间: 2024-08-24 17:30:28

2.2主键介绍的相关文章

【转】NHibernate主键类型介绍

转自:http://blog.163.com/wzx_dd/blog/static/1942850722012828934553/ 最近整合了一下框架,用SSH搭建了一个框架,但是在整合好之后,启动tomcat的时候老是报这个错误,上网搜集了一下并向同事问了问,终于知道了错误原因: 数据库不支持自动递增主键(oracle就不支持)所以你的key generation需要从新设置 通过上网搜集,整理了一下关于主键自增列的知识,以供以后学习使用: 1) Assigned 主键由外部程序负责生成,无需

SQL数据库中的主键与外键的介绍

一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 用户表(用户名.密码.登录级别) 其中用户名是唯一的, 用户名就是一个主键 上机记录表(卡号,学号,姓名.序列号) 上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的

Hibernate的主键生成策略的介绍

Hibernate主键的生成策略: 就是在配置文件中class中的配置项 <id name="id" column="id"> <generator class="increment"/> </id> native:适用于代理主键,代理主键就是没有业务含义的主键,通常用id表示,根据底层数据库对自动生成标识符的能力来选择identity.sequence.hilo identify:适用于代理主键,有底层数据库

Mysql索引介绍及常见索引(主键索引、唯一索引、普通索引、全文索引、组合索引)的区别

Mysql各种索引区别:普通索引:最基本的索引,没有任何限制唯一索引:与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值.主键索引:它 是一种特殊的唯一索引,不允许有空值. 全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很耗时好空间.组合索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则. Mysql索引概念:说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这

hibernate主键详细介绍

/** * * @author liuguangyi * @content ejb3注解的API定义在javax.persistence.*包里面. * * 注释说明: * @Entity -- 将一个类声明为一个实体bean(即一个持久化POJO类) * @Id -- 注解声明了该实体bean的标识属性(对应表中的主键). * @Table -- 注解声明了该实体bean映射指定的表(table),目录(catalog)和schema的名字 * @Column -- 注解声明了属性到列的映射.

hibernate关联映射【一对一主键】

从三个部分介绍Hibernate一对一主键关联映射. 1.基本介绍2.代码展示3.总结注意  1.基本介绍 一对一关联有两种情况: 单向一对一主键关联.双向一对一主键关联.一对一主键关联: 是指两个表之间通过主键形成一对一的映射,例如,每个公民只允许拥有一个身份证,公民与身份证就是一对一的关系,定义两张表,一张People表,一张IdCard表,People表的id既是该表的主键也是该表的外键,并且People的id也就是IdCard的id, 2.代码 单向一对一主键关联:people表的id既

hibernate的@EmbeddedId嵌入式主键详解

一.前言 在我们的日常开发中,有时候会用到数据库进行设计的时候,采用了复合主键来来保证唯一性,下面介绍一下采用hibernate的@EmbeddedId嵌入式主键. 二.说明 设计一个学生类,包含了三个字段 create tbale student( stu_no char(11) not null, stu_name varchar2(30) not null, stu_class varchar2(20) ) stu_no : 学号. stu_name : 姓名 . stu_class :

hibernate笔记--基于主键的单(双)向的一对一映射关系

上一节介绍的基于外键的一对一映射关系中,在Person表中有一个外键列idCard_id,对应的idCard表的主键id,至于基于主键的一对一映射关系,就是指Person表中抛弃了idcard_id这个外键列,而与idCard表共用一个主键,或者说是其外键为主键的表结构,这种基于主键的双向一对一映射关系应该这样配置: 新建一个IdCard实体类: public class IdCard { private int id; private String code; private Person p

MySQL获取其他表的主键

通常我们在应用中对mysql执行了insert操作后,需要获取插入记录的自增主键.本文将介绍java环境下的4种方法获取insert后的记录主键auto_increment的值: 通过JDBC2.0提供的insertRow()方式 通过JDBC3.0提供的getGeneratedKeys()方式 通过SQL select LAST_INSERT_ID()函数 通过SQL @@IDENTITY 变量 1. 通过JDBC2.0提供的insertRow()方式 自jdbc2.0以来,可以通过下面的方式