独一约束【允许贰个空】UNIQUE,即表中的一行(一
1.数据库设计三大范式
#实体的完整性
概述: 实体:即表中的一行(一条记录)代表一个实体(entity) 实体完整性的作用:标识每一行 数据不重复
约束类型有:主键约束 primary key 唯一约束 unique 自动增长列 auto_increment
*主键约束
注:每个表中要有一个主键。特点:数据唯一,且不能为null。
第一种添加方式:
CREATE TABLE student( id int primary key, name varchar(50));
第二种添加方式:此种方式优势在于,可以创建联合主键
CREATE TABLE student(id int,name varchar(50),primary key(id));
CREATE TABLE student(classid int,stuid int,name varchar(50),primary key(classid ,stuid));
第三种添加方式:
CREATE TABLE student(id int,name varchar(50));
ALTER TABLE student ADD PRIMARY KEY (id);
*唯一约束
特点是不能重复
create table student(id int primary key,name varchar(255) unique);
*自动增长列
sqlserver数据库(identity) oracle数据库( sequence)��
给主键添加自动增长的数值,列只能是整数类型
create table student(id int primary key auto_increment,name varchar(255));
范式一:保证数据库之中表每一列的原子性{如果 某一列 出生地的内容:湖南-长沙-芙蓉区 ,这种数据已然背离了 第一范式,此时应该设计多张表 }
目录
#域完整性
域完整性的作用:限制此单元格的数据正确,不对照此列的其它单元格比较 域代表当前单元 格 域完整性约束:数据类型 非空约束(notnull) 默认值约束(default) check约束(mysql不支 持)check(sex='男'orsex='女')
*数据类型
数值类型、日期类型、字符串类型
*非空约束 not null
CREATE TABLE student( Id int pirmary key, Name varchar(50) not null, Sex varchar(10));
INSERT INTO student values(1,’tom’,null);
*默认值约束
CREATE TABLE student(Id int pirmary key,Name varchar(50) not null,Sex varchar(10) default ‘男’);
insert into student1 values(1,'tom','女');
insert into student1 values(2,'jerry',default);
简介
在Android中存储数据有时会用到数据库,Android给我们提供了 一系列的API来操作数据库,非常简单,我们只需要输入对应的SQL语句,甚至不懂SQL语句,只传入对应的参数即可使用。还有一些第三方库,如GreenDao,OrmLite等都极大的简化了对数据库的一些操作。这样虽然我们不需要对数据库有多了解一样能实现功能,但是在面对复杂操作时,对SQL语句的熟练使用就显得尤为重要了。因为在Android我们只要是利用SQL语句对表操作,所以本文主要介绍SQL的使用,只是简单介绍了数据库一些相关的概念,这样能有更加清晰的认识。
#引用完整性(参照完整性)
外键约束: foreing key
分清主次关系 外键依赖主键 先有主键 再有外键
语法
CONSTRAINT 约束的名字 FOREIGN KEY(约束的字段) REFERENCES 主表(约束字段)
ALTER TABLE 次表名称 ADD CONSTRAINT 约束的名字 FOREIGN KEY(约束的字段) REFERENCES 主表(约束的字段);
例:
CREATE TABLE student(sid int pirmary key,name varchar(50) not null,sex varchar(10) default‘男’);
create table score(id int,score int,sid int , --外键列的数据类型一定要与主键的类型一致
CONSTRAINT fk_score_sid foreign key (sid) references student(id));
第二种添加外键方式。
ALTER TABLE score1 ADD CONSTRAINT fk_stu_score FOREIGN KEY(sid) REFERENCES stu(id);
**范式一:保证数据库之中表每一列与主键有关{如果 某一行之中数据描述的是一个学生的实体包括 {id name sex age classid } 如果再多加一列 光照强度 这种数据已然背离了 第二范式,此时应该设计多张表 }**
数据模型
按照计算机系统的观点对数据进行建模。
概念模型
也称为信息模型,即按照用户的观点来对数据和信息建模
- 实体(Entity):客观存在并可互相进行区分的事物称为实体
- 属性(Attribute):实体所具有的某一特性称为属性,一个实体可有若干个属性来刻画。
- 键(KEY):唯一标识实体的属性集称为键,一般分为超键、候选键、主键以及外键。
- 域(Domain):属性的取值范围称为该属性的域。
- 实体型(Entity type):用实体名以及其属性名集合来抽象和刻画同类实体称为实体型
- 实体集:同型实体的集合称为实体集
范式一:保证数据库之中表每一列与主键直接相关 **{如果 某一行之中数据描述的是一个学生的实体包括 {id name sex age classid } 如果再多加一列 classname 这种数据已然背离了 第三范式,此时应该设计多张表 }**
现实世界的实体进入数据库
- 1.讲现实世界中的客观对象抽象为概念模型
- 2.把概念模型转化为某一DBMS(数据库管理系统)支持的数据模型
2.数据的特点:正确,可靠,完整
键的概念
- 超键(super key):在关系中能唯一区分实体的属性集称为关系模式中的超键。
- 候选键(candidate key):不含有多余属性的超键(每一个属性都能区分实体)
- 主键(primary key):用户选作区分实体发的一个候选键(foreign key)
- 外键:在某个关系A中的主键出现在另一个关系B中,此时关系A中的该主键称为关系B中的外键。
例子说明: 员工(身份证号、姓名、年龄、性别)假设姓名也是唯一的超键:身份证号、姓名、姓名+年龄、姓名+性别、身份证号+年龄、身份证号+性别候选键:身份证号、姓名
数据库设计范式
数据库设计范式简单的说就是关系数据库在设计时需要遵循的一种规范,数据库范式按照要求从低到高分为6大范式,即第一范式(1NF)~第六范式(6NF)。在第一范式的基础上进一步满足更多要求的称为第二范式,一次类推。越高的范式数据库冗余越小,一般来说,数据库只需要满足第三范式(3NF)就行了。
3.数据完整性分类
域完整性
实体完整性
自定义完整性
引用完整性
第一范式
是数据库设计的最基本的要求,不满足1NF的数据库不是关系型数据库
所谓第一范式就是指数据库表的每一列都是不可分割的基本数据项,同一列中只能有一个属性(也就是说一个属性下不能再分出其他的属性来)
4.数据完整性保持手段:约束
第二范式
第二范式是在第一范式的基础上建立起来的,即满足2NF必须先满足1NF
只出现在复合主键的数据库表中
第二范式要求数据库表中的每个实例或者行必须可以被唯一地区分,所以实体必须设置主键,并且实体的属性必须完全依赖于主键,不得出现非主键属性部分依赖于主键的情况。
主键为学号+课程名称,而学分依赖于学号,这就是所谓的非主键属性依赖于主键的情况,这是不符合2NF的,出现了数据的冗余(存储多余的数据,浪费空间),解决办法就是拆成3张表。
5.7大约束
唯一约束【允许一个空】UNIQUE
主键约束【不允许空,最少性,稳定性】PRIMARY KEY
检查约束 CHECK
自定义约束
默认约束 DEFAULT
非空约束 NOT NULL
外键约束 FOREIGN KEY
第三范式
要求一个数据库表中不包含已在其他表中已包含的非主关键字信息(非主键属性不能出现在第二张表中)
非主键属性重复了,完全可以根据编号(主键)去查询部门简介和名称
6.T-SQL组成
数据库设计的完整性约束
DDL数据定义语言【create drop alter declare 】
实体完整性约束
每个实例或者行的主键都不能为空
DCL数据控制语言【revoke grant】
参照完整性约束
外键可以为空值;当外键不为空时,其取值只能等于参照的主键的某个值
DML数据管理语言【insert update select delete】
数据库的约束
约束是表级强制执行的规则,当表中数据有相互依赖性时,可以保护数据不被删除
约束的类型:
- 表级约束和列级约束,他们两者在作用上没有任何的区别,但通常如果某个约束用于于不止一个列时,只能使用表级约束的形式来进行表达,如果多个字段组成耨表的联合主键时。
- 列级约束: 在定义列的时候:列名 约束类型 表级约束 在定义完所有的列后:列名,列名,。。。 约束类型
6.查询方式
选择 【int() not in() between and 】
模糊 【通配符: % _ * 】
筛选 【where like = 】
排序 【order by 】
聚合 【count sum avge max min 】
分组 【group by 】
连接 【 内连接 外连接 全连接 交叉连接 】
子查询 【select * from A where id not in (select id from A where id>=10)】
oracle有如下类型的约束:
not null:非空
primary key:主键约束
foreign key:外键约束
check:检查约束
unique key:唯一性约束
not null(非空约束)
create table student(
name varchar2(10),
sex varchar(5) not null,
age integer)
primary key(主键约束)
表级方式定义主键
create table student(
name varchar2(19),
sex varchar2(10),
age integer,
constraint student_age_pk primary key(age)
);
把age定义为主键(student_澳门三合彩票,age_pk:约束的名字有一定的规范:表名主键名约束类型)
列级方式定义主键
create table student(
name varchar2(19) primary key,
sex varchar2(10),
age integer);
foreign key(外键约束)
create table emp(
empno number(4),
ename varchar2(10) not null,
job varchar2(9),
deptno number(7,2) not null,
constraint emp_deptno_fk foreign key(deptno) references dept (deptn)
);
--references dept (dept):外键所对应的主键所在的表 关键字 主表 主键
本文由澳门三合彩票发布于数据库,转载请注明出处:独一约束【允许贰个空】UNIQUE,即表中的一行(一
关键词: