数据库设计

关系数据模型结构
关系模型由关系数据结构,关系操作结构,关系完整性约束三部分组成
关系型数据模型中数据用二维表格的形式组成
关系操作集合 增加、删除、修改、查询,并交等
三种约束完整性:实体完整性、参照完整性、用户自定义完整性。
实体完整性:实体完整性是指实体的主属性不能取空值,列如人都身份证,学生的学号
参照完整性:关系中不允许引⽤不存在的实,例如学生不能在没有的班级 定义完整性:用户定义完整性是针对某一个具体关系的约束条件,不同的应⽤有着不同的具体要求,这些约束条件 就是用户根据需要自己定义的。例如性别取值范围为男、女。

相关概念和常用术语:

数据表:表是数据的矩阵。
记录(元组):表中的一行
字段(属性):表中的一列
域:属性的取值范围 比如性别:男,女
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。


关系型数据库语言
SQL:结构化查询语言(Struct Query Language)
数据库主要是sql语句的用法,类似于操作系统的命令。
SQL使我们有能力访问数据库
SQL 是一种 ANSI 的标准计算机语言


SQL
语句不区分大小写,但在""和"中区分
SQL能做什么?
SQL面向数据库执行查询
可以从数据取回数据
可在数据库中插入新的记录
可更新数据库中的数据
可从数据库删除记录
可创建新数据库
可在数据库中创建新表
可在数据库中创建存储过程
可在数据库中创建视图
可以设置表、存储过程和视图的权限

SQL分类:
数据库查询语言DQL
基本结构 SELECT<字段名表>FROM<表或视图>WHERE<查询条件>
数据操纵语言DML
插入:INSERT 更新:UPDATE 删除:DELETE
数据定义语言DDL
数据定义语言DDL用来创建数据库中的各种对象-----表、视图、 索引等
CREATE TABLE
CREATE VIEW
CREATE INDEX
数据控制语句 数据控制语言DCL
COMMIT:提交
ROLLBACK:回滚
配合DML使用 GRANT:授权(一般DBA使用)



MySQL是免费开源的大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统最大的表文件为8TB。
MySQL使用标准的SQL数据语言,是可以定制的,采用了GPL协议,你可以修改源码来开发自己的MySQL系统

MySQL支持C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等

MySQL默认数据库介绍
information_schema:
信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库

SCHEMATA表:提供了当前mysql实例中所有数据库的信息.show databases的结果取自此表。
TABLES表:提供了关于数据库中的表的信息。
COLUMNS表:提供了表中的列信息。
STATISTICS表:提供了关于表索引的信息。
USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。
SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库)权限的信息。
TABLE_PRIVILEGES(表权限)表:给出了关于表权限的信息。
COLUMN_PRIVILEGES(列权限)表:给出了关于列权限的信息。
CHARACTER_SETS(字符集)表:提供了mysql实例可用字符集的信息。
COLLATIONS表:提供了关于各字符集的对照信息。

mysql:
负责数据库的用户权限设置、关键字等
performance_schema:
收集数据库服务器性能参数。并且库里表引擎均为performance_schema
test:
测试数据库,和它的名字一样,是一个完全的空数据库,没有任何表,可以删除。

MySQL的存储引擎
插件式存储引擎是MySQL数据库最重要的特性之一,用户可以根据应用的需要选择如何存储和索引数据库,是 否使用事务等。mySQL默认⽀持多种存储引擎,以适应不同领域的数据库应用需要。
MySQL常⽤的存储引擎为MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事务安全表,其他存储引 擎都是非事务安全表。
MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没 有要求。
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。

常用命令
USE 数据库名 数据库名 ;
切换数据库
show databases;
列出数据库列表 show tables;

显示当前选择数据库的所有表
show columns from 数据表 数据表;
显示数据表的属性
desc 数据表;
查看表结构
quit;exit;
退出MySQL
update mysql.user set authentication_string=PASSWORD('123123');
设置新密码
flush privileges;
刷新权限

图形化管理工具
使用GUI管理工具如MySQL Workbench,navicat ,SQLyog等等。

数据库设计包括以下几个部分:
需求设计
概念结构设计
逻辑结构设计
物理结构设计
数据库的实施
数据库的运行与维护
E-R图 实体联系图
矩形框:表示实体
菱形框:表示联系
椭圆形框:表示实体的属性 属性之间存在主键
连线:用于连接各个形状描述对应关系(1:n:m)

学生(学号、姓名、年龄、性别、班级)
:听课
课程(课程号、课程名、学分)
:授课
教师(教师编号、姓名、年龄、性别)

第一范式:
关系模式中的每一个分量都应该是不可再分的数据项,也就是说实体的每一个属性不能存在子属性。


第二范式(2NF):
在满足第一范式的条件下,每个非主属性完全依赖主属性。

成绩表
学号 课程号 成绩 学分
001 C++ 99 4
002 数据库 88 5
002 C++ 96 4
003 C++ 90 6
004 java 98 5
001 java 86 6

第三范式(3NF):
在满足第二范式的基础上,所有的非主属性不能依赖于其他非朱属性。

学号 姓名 班级号
001 张三 01
002 李四 02
003 王五 03

班级号 班级名称
01 c++
02 java
03 python

两个非主属性不能依赖于其他非主属性
(一般数据库设计到第三范式就可以了)


职工号 出生年月 年龄
001 2000.1.1 19

巴斯.科德范式(BCNF)
称为完善第三范式,在满足第三范式的基础上,非主属性不能依赖于主属性的子集 如:成绩表中的学分,课程号和成绩不能依赖于学号。

第四范式
在第三范式的基础上,表中不能包含一个实体的两个或多个相互独立的多值因子

第五范式(完美范式)
在第四范式的基础上表必须可以分为较小的表,除非这些表在逻辑上拥有相同的主键。

原文地址:https://www.cnblogs.com/liugangjiayou/p/11669442.html