数据完整性(数据库表的设计)

 

实体完整性  对应 每一行数据

1. 什么是实体

  •  数数据库一行 就是一个实体
  • 行级约束

2. 约束类型

主键约束    primary key

唯一约束    unique

自动增长列 auto increment

3. 主键约束

每一个表中需要有一个主键

主键约束该列 数据 不能重复, 且 主键   不能为 null

声明方式:


       2.  在最后一列 声明:                    primary key(字段...)

       3.  先创建表,然后使用  ALTER  TABLE 表名 ADD CONSTRAINT PRIMARY KEY (字段)

联合主键:  多个字段 作为 一个主键,

所用       :  多个字段 作为 一个主键 ,多个字段 一起相同, 不相同


 

4. 唯一约束

特点: 约束 所 修饰的 字段 必须 唯一, 不能重复, 可以为 null

  可以有 多个 null

5. 自动增长列

指定列 的数据 自动 增长, 即使删除数据, 还是会从删除的列 继续往下增长,

声明方式: 字段  或  主键 后面加上  auto_increnment  ,一般配合 主键 或者 unique 使用

DROP TABLE student;

CREATE TABLE student(
	sid  int  PRIMARY KEY COMMENT '学生id',
	sname VARCHAR(30) COMMENT '学生姓名'
)

CREATE TABLE student(
	sid  int  COMMENT '学生id',
	sname VARCHAR(30) COMMENT '学生姓名',
	PRIMARY KEY(sid)
)

ALTER TABLE student ADD CONSTRAINT PRIMARY KEY(sid)


CREATE TABLE student(
	sid  int  COMMENT '学生id' UNIQUE,
	sname VARCHAR(30) COMMENT '学生姓名' 
)

CREATE TABLE student(
	sid  int  AUTO_INCREMENT COMMENT '学生id',
	sname VARCHAR(30) COMMENT '学生姓名',
  PRIMARY KEY(sid)	
)


INSERT INTO student VALUES(3, '旺旺')

 

 

 


域完整性:  (列完整性) 对应 每一列 字段

1. 以 单元格 (字段)  为 单位 进行 约束, 针对当前 单元格的数据。也称为 列 完整性。 不去对照其他数据,

主要保证当前 单元格的 不会被 插入 无效数据

2. 域的 完整  约束

     * 数据类型的约束

     * 非空约束(not null)

     * 默认值 约束(default)

 

 

 

 

 

 


参照完整性: (引用完整性)

1. 指表 与 表 之间的对应 关系

主键, 外键关系, 或者 编写两张表 的 触发器

    操作 有引用关系的 数据表格的过程中, 对其一张表做 插入, 更新, 删除 时, 系统都会将 被 修改的 表格 与 另外 一张表格 进行参照, 从而阻止一些 不正确的数据 操作

2. 要求

至少两张表 (主表, 从表)

主表: 用来约束其他表 的表

从表: 收约束的表

数据库的 主键 和 外键 类型要 一致

设置 参照完整性 后, 外键中的值, 必须得是 另外一张 表中 主键的内容

3. 外键的声明 方式

建表 添加

工具添加

alter  alter table tab add constraint sc_tc_fk foreign key (sid) references student(sid)

 

mysqlfront主键怎么设置 mysql数据库设置主键_主键

 

 

CREATE TABLE student(
 sid INT PRIMARY KEY AUTO_INCREMENT,
 sname VARCHAR(30) UNIQUE
)


CREATE TABLE class(
	cid INT PRIMARY KEY AUTO_INCREMENT,
	cname VARCHAR(30) UNIQUE,
	yname VARCHAR(30)
)




ALTER TABLE student ADD COLUMN cid INT  COMMENT '班级外键'


ALTER TABLE student ADD  CONSTRAINT FOREIGN KEY s_c_id(cid)
REFERENCES class(cid)

 

 

 


 

 

表与表之间的关系:

      1.  一对一关系

           一个人只有一个身份证

 

      2. 一对多关系

          一个人有多张银行卡, 一个银行卡只能 属于一个人

          一个人有多辆汽车, 一辆汽车是属于一个人

         

      般需要引入第三张 表 作为   关系对照表

           一个老师有多位学生

           一个学生有多位老师

 

mysqlfront主键怎么设置 mysql数据库设置主键_字段_02

 

 

DROP TABLE class;

DROP TABLE  student


CREATE TABLE student(
 sid INT PRIMARY KEY AUTO_INCREMENT,
 sname VARCHAR(30) UNIQUE
)


CREATE TABLE class(
	cid INT PRIMARY KEY AUTO_INCREMENT,
	cname VARCHAR(30) UNIQUE,
	yname VARCHAR(30)
)




ALTER TABLE student ADD COLUMN cid INT  COMMENT '班级外键'


ALTER TABLE student ADD  CONSTRAINT FOREIGN KEY s_c_id(cid)
REFERENCES class(cid)


CREATE TABLE teacher(
 tid INT PRIMARY KEY  AUTO_INCREMENT,
 tname VARCHAR(30) NOT NULL
)

CREATE TABLE student(
 sid INT PRIMARY KEY AUTO_INCREMENT,
 sname VARCHAR(30) UNIQUE NOT NULL
)


CREATE TABLE stu_te_ref(
 sid int,
 tid int
)

ALTER TABLE stu_te_ref ADD CONSTRAINT FOREIGN KEY stu_fr_sid(sid) REFERENCES student(sid)

ALTER TABLE stu_te_ref ADD CONSTRAINT FOREIGN KEY stu_fr_tid(tid) REFERENCES teacher(tid)