主键、自增、唯一键和三大范式

主键、自增、唯一键和三大范式

主键primary key, 加在建表语句中primary key(主键列表),主键对应的字段不允许重复

自增长,在建表语句字段后加auto_increment,这样当对应的字段设置值不给值或给null或直接给默认值时会从表中最大值+1,一个表中只能有一个自增长

唯一键unique key,解决多个字段需要保证唯一性的问题

范式

第一范式:字段中的数据具有原子性,表中数据取出就不用在处理

第二范式:如果有复合主键,某种数据只依赖主键中的某个字段而不是全部主键

(主键:班级和讲师,性别依赖讲师,教室依赖班级)

第三范式:一张表中所有主键都直接依赖主键,而不是通过某个非主键字段依赖,不允许传递依赖

逆规范化:数据都通过一张表查,除非查不到再去领一张表,这样效率会增加但数据会冗余

原文地址:https://www.cnblogs.com/shizhuoping/p/11561563.html

时间: 2024-11-05 17:18:10

主键、自增、唯一键和三大范式的相关文章

hao947 : Mybatis resultMap配置插入和主键自增返回 : 好947

映射配置文件  好947  <!-- type:映射实体类的数据类型 id:resultMap的唯一标识 -->  <resultMap type="person" id="BaseResultMap">   <!-- column:库表的字段名 property:实体类里的属性名 -->   <id column="person_id" property="personId" /&g

SQL 主键 自动编号 主键自增

1.新建一数据表,里面有字段id,将id设为为主键 代码如下: create table tb(id int,constraint pkid primary key (id)) create table tb(id int primary key ) 2.新建一数据表,里面有字段id,将id设为主键且自动编号 代码如下: create table tb(id int identity(1,1),constraint pkid primary key (id)) create table tb(i

Hsqldb中设置主键,并让主键自增

CREATE TABLE userinfo ( Id INTEGER GENERATED BY DEFAULT AS IDENTITY, Name varchar(100) NOT NULL, Department varchar(100) NOT NULL, Status varchar(100) DEFAULT NULL, Email varchar(200) NOT NULL, PRIMARY KEY (Id)) Hsqldb中设置主键,并让主键自增,布布扣,bubuko.com

oracle主键自增(1) 序列+触发器实现Oracle主键自增

序列+触发器实现Oracle主键自增 序列的语法格式为: CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/MINVALUE n|NOMAXVALUE}] [{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}]; INCREMENT BY 用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表序列的值是按照此步长递减的. START WITH 定义Oracle序列的初始值(即产生的第一个值),

使用powerdesigner建模时设置主键自增的问题

研究了一下,其实只要双击表,选择columns,再双击在你所要设为自增型的键上(比如你的id)或者右键选择Properties,弹出一个ColumnProperties 对话框,我们看到有标识 identify,勾选即可. Columns 的UI上有一个漏斗型 的图标 Customize columns and filters 点击以后选择你要的列,里面有:default 和identity 选中后,以后表格能只需要打勾就行了. 在CDM中是不能设置主键自增属性的,只有在PDM中才能设置. 因为

oracle 触发器实现主键自增

drop table book; --创建表 create table book( bookId varchar2(4) primary key, name varchar2(20) ); --创建序列 create sequence book_seq start with 1 increment by 1; --创建触发器 create or replace trigger book_trigger before insert on book for each row begin select

是数据库设置主键自增的时候添加也可以自定义主键值

SET IDENTITY_INSERT  dbo.PDAUserInfo ON //开启当前表的可复制功能,仅在当前绘画中有效 insert into dbo.PDAUserInfo(ID,UserName) values(43,'asdf') SET IDENTITY_INSERT  dbo.PDAUserInfo OFF    //关闭当前表的可复制功能,仅在当前绘画中有效 insert into dbo.PDAUserInfo(UserName) values('asdf') 是数据库设置

mysql数据库单表只有一个主键自增id字段,ibatis实现id自增

mysql数据库单表只有一个主键自增id字段,ibatis实现id自增 <insert id="autoid">        insert into user_id values(null)        <selectKey resultClass="int">SELECT @@IDENTITY As id</selectKey>    </insert>

【mybatis】mybatis中insert 主键自增和不自增的插入情况【mysql】

主键不自增:返回值是插入的条数 <insert id="add" parameterType="EStudent"> insert into TStudent(name, age) values(#{name}, #{age}) </insert 主键自增: <insert id="add" parameterType="EStudent" useGeneratedKeys="true&quo