即表中的一行(一条记录)巴黎人手机版:代表一个
分类:巴黎人-数据库

1.数据库设计三大范式

巴黎人手机版 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));

1.数据库(Database)是按照数据结构来组织、存储和管理数据的仓库

范式一:保证数据库之中表每一列的原子性{如果 某一列 出生地的内容:湖南-长沙-芙蓉区 ,这种数据已然背离了  第一范式,此时应该设计多张表    }

目录

巴黎人手机版 2

#域完整性

  域完整性的作用:限制此单元格的数据正确,不对照此列的其它单元格比较  域代表当前单元     格 域完整性约束:数据类型   非空约束(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);

摘要

2.RDBMS即关系数据库管理系统(Relational Database Management System)的特点:
  1).数据以表格的形式出现
  2).每行为各种记录名称
  3).每列为记录名称所对应的数据域
  4).许多的行和列组成一张表单
  5).若干的表单组成database

 

简介

在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);

对于SQL Server中的约束,想必大家并不是很陌生。但是约束中真正的内涵是什么,并不是很多人都很清楚的。本文以详细的文字来介绍了什么是约束,以及如何在数据库编程中应用和使用这些约束,来达到更好的编程效果。(本文部分内容参考了SQL Server联机手册)

3.RDBMS 术语
数据库:       数据库是一些关联表的集合。.
数据表:       表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
列:              一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
行:            一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。

**范式一:保证数据库之中表每一列与主键有关{如果 某一行之中数据描述的是一个学生的实体包括   {id name sex age classid }  如果再多加一列 光照强度 这种数据已然背离了  第二范式,此时应该设计多张表    }**

数据模型

按照计算机系统的观点对数据进行建模。

内容

冗余:    存储两倍数据,冗余可以使系统速度更快。(表的规范化程度越高,表与表之间的关系就越多;查询时可能经常需要在多个表之间进行连接查询;而进行连接操作会降低查询速度。例如,学生的信息存储在student表中,院系信息存储在department表中。通过student表中的dept_id字段与department表建立关联关系。如果要查询一个学生所在系的名称,必须从student表中查找学生所在院系的编号(dept_id),然后根据这个编号去department查找系的名称。如果经常需要进行这个操作时,连接查询会浪费很多的时间。因此可以在student表中增加一个冗余字段dept_name,该字段用来存储学生所在院系的名称。这样就不用每次都进行连接操作了。)

 

概念模型

也称为信息模型,即按照用户的观点来对数据和信息建模

  • 实体(Entity):客观存在并可互相进行区分的事物称为实体
  • 属性(Attribute):实体所具有的某一特性称为属性,一个实体可有若干个属性来刻画。
  • 键(KEY):唯一标识实体的属性集称为键,一般分为超键、候选键、主键以及外键。
  • 域(Domain):属性的取值范围称为该属性的域。
  • 实体型(Entity type):用实体名以及其属性名集合来抽象和刻画同类实体称为实体型
  • 实体集:同型实体的集合称为实体集
  数据完整性分类
  实体完整性
  域完整性
  引用完整性
  用户定义完整性
  PRIMARY KEY约束
  DEFAULT约束
  CHECK约束
  UNIQUE约束
  FOREIGN KEY约束

主键:    主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
外键:    外键用于关联两个表。
复合键:   复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
索引:     使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
参照完整性:   参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

范式一:保证数据库之中表每一列与主键直接相关 **{如果 某一行之中数据描述的是一个学生的实体包括   {id name sex age classid }  如果再多加一列 classname  这种数据已然背离了  第三范式,此时应该设计多张表 }**

现实世界的实体进入数据库

  • 1.讲现实世界中的客观对象抽象为概念模型
  • 2.把概念模型转化为某一DBMS(数据库管理系统)支持的数据模型

正文

4.mysql的使用
1)show databases;                          #显示数据库

2.数据的特点:正确,可靠,完整

键的概念

  • 超键(super key):在关系中能唯一区分实体的属性集称为关系模式中的超键。
  • 候选键(candidate key):不含有多余属性的超键(每一个属性都能区分实体)
  • 主键(primary key):用户选作区分实体发的一个候选键(foreign key)
  • 外键:在某个关系A中的主键出现在另一个关系B中,此时关系A中的该主键称为关系B中的外键。

例子说明: 员工(身份证号、姓名、年龄、性别)假设姓名也是唯一的超键:身份证号、姓名、姓名+年龄、姓名+性别、身份证号+年龄、身份证号+性别候选键:身份证号、姓名

在数据库管理系统中,保证数据库中的数据完整性是非常重要的。所谓数据完整性,就是指存储在数据库中数据的一致性和正确性。约束定义关于列中允许值的规则,是强制完整性的标准机制。使用约束优先于使用触发器、规则和默认值。查询优化器也使用约束定义生成高性能的查询执行计划。

2)use <数据库名>;                           #  连接数据库

 

数据库设计范式

数据库设计范式简单的说就是关系数据库在设计时需要遵循的一种规范,数据库范式按照要求从低到高分为6大范式,即第一范式(1NF)~第六范式(6NF)。在第一范式的基础上进一步满足更多要求的称为第二范式,一次类推。越高的范式数据库冗余越小,一般来说,数据库只需要满足第三范式(3NF)就行了。

SQL Server联机丛书中,将数据完整性解释如下:“存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。”强制数据完整性可确保数据库中的数据质量。

3)show tables;                                  #显示表

3.数据完整性分类

域完整性

实体完整性

自定义完整性

引用完整性

 

第一范式

是数据库设计的最基本的要求,不满足1NF的数据库不是关系型数据库
所谓第一范式就是指数据库表的每一列都是不可分割的基本数据项,同一列中只能有一个属性(也就是说一个属性下不能再分出其他的属性来)

例如,如果输入了 employee_id 值为 123 的职员,那么该数据库不应允许其他职员使用同一 ID 值。如果计划将 employee_rating 列的值范围设定为从 1 到 5,则数据库不应接受 6。如果表有一 dept_id 列,该列存储职员的部门编号,则数据库应只允许接受公司中的有效部门编号。

4)desc <表名>;                                #查看表结构 ,也可以用show columns from <表名>;

4.数据完整性保持手段:约束

 

 

第二范式

第二范式是在第一范式的基础上建立起来的,即满足2NF必须先满足1NF
只出现在复合主键的数据库表中
第二范式要求数据库表中的每个实例或者行必须可以被唯一地区分,所以实体必须设置主键,并且实体的属性必须完全依赖于主键,不得出现非主键属性部分依赖于主键的情况。

主键为学号+课程名称,而学分依赖于学号,这就是所谓的非主键属性依赖于主键的情况,这是不符合2NF的,出现了数据的冗余(存储多余的数据,浪费空间),解决办法就是拆成3张表。

数据完整性分类

5)selsct * from <表名>;                        #查看表数据

5.7大约束

唯一约束【允许一个空】UNIQUE

主键约束【不允许空,最少性,稳定性】PRIMARY KEY

检查约束  CHECK

自定义约束 

默认约束  DEFAULT

非空约束  NOT NULL

外键约束 FOREIGN KEY

 

 

第三范式

要求一个数据库表中不包含已在其他表中已包含的非主关键字信息(非主键属性不能出现在第二张表中)

非主键属性重复了,完全可以根据编号(主键)去查询部门简介和名称

在SQL Server中,根据数据完整新措施所作用的数据库对象和范围不同,可以将数据完整性分为以下几种。

6)selsct * from <表名>G                       #查看表数据(显示内容清晰)不用加 ;

6.T-SQL组成

数据库设计的完整性约束

  实体完整性
  域完整性
  引用完整性
  用户定义完整性

7)grant all on *.* to 'username'@'localhost' identified by 'passwd';       #  创建用户以及设置权限 all是赋予所有权限

DDL数据定义语言【create  drop  alter  declare  】

实体完整性约束

每个实例或者行的主键都不能为空

SQL Server联机丛书中指明:“对表进行计划有两个重要步骤:标识列的有效值和确定如何强制列中的数据完整性。”

8)create database <数据库名>;                   #创建数据库

DCL数据控制语言【revoke  grant】

参照完整性约束

外键可以为空值;当外键不为空时,其取值只能等于参照的主键的某个值

实体完整性

9)create table student(
    id int auto_increment,
    name char(32) not null,
    age int not null,
    register_date date not null,
    primary key(id));
#创建一个简单的表

DML数据管理语言【insert  update  select  delete】

数据库的约束

约束是表级强制执行的规则,当表中数据有相互依赖性时,可以保护数据不被删除

实体完整性简单的说,就是将表中的每一行看作一个实体。实体完整性要求表的标示符列或主键的完整性。可以通过建立唯一索引、PRIMARY KEY约束、UNIQUE约束,以及列的IDENTITY属性来实施实体完整性。

10)show create database <数据库名>;                      #查看数据库的character

 

 

约束的类型:

  • 表级约束和列级约束,他们两者在作用上没有任何的区别,但通常如果某个约束用于于不止一个列时,只能使用表级约束的形式来进行表达,如果多个字段组成耨表的联合主键时。
  • 列级约束: 在定义列的时候:列名 约束类型 表级约束 在定义完所有的列后:列名,列名,。。。 约束类型

域完整性

11)create database <数据库名> charset utf8;                    #创建数据库并设置character为utf-8

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:唯一性约束

域完整性是指给定列的输入有效性。要求表中指定列的数据具有正确的数据类型、格式和有效的数据范围。强制域有效性的方法有:限制类型(通过数据类型)、格式(通过 CHECK 约束和规则)或可能值的范围。域完整性通过 FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则来实现。

12)drop table <表名>;                               #删除表

not null(非空约束)

create table student(
     name varchar2(10), 
     sex varchar(5) not null, 
     age integer)

引用完整性

13)drop database <数据库名>;                           #删除数据库

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);

引用完整性又称参照完整性。引用完整性维持被参照表和参照表之间的数据一致性,他通过主键(PRIMARY KEY)约束和外键(FOREIGN KEY)约束来实现。引用完整性确保键值在所有表中一致。这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。在被参照表中,当其主键值被其他表所参照时,该行不能被删除也不允许改变。在参照表中,不允许参照不存在的主键值。

14)select * from <表名> limit 3 offset 2;                       #从第三个开始查询限制(limit)3个

本文由巴黎人手机版发布于巴黎人-数据库,转载请注明出处:即表中的一行(一条记录)巴黎人手机版:代表一个

上一篇:获取部分行巴黎人手机版:,会执行所有的sql语 下一篇:学号与课程名称是主键,数据控制语言(DCL)
猜你喜欢
热门排行
精彩图文