Mysql学习笔记-概述

参考书籍:Mysql核心技术与最佳实践 /孔祥盛编著. -北京:人民邮电出版社,2014.5 ISBN 978-7-115-33769-6

虽然用了三年的Mysql,但是没有系统性的刷一遍知识框架,导致经常小题大做,写出浪费时间、空间语句。随刷之。

一、数据库概述

数据库(Database,DB)是存储、管理数据的容器。

1、关系数据库管理系统

数据是数据库核心。数据库容器通常包含如表、视图、索引、函数、存储过程、触发器、事件等,最终以文件的形式存储与外村。

数据库管理系统是一个管理、控制数据库容器中各种数据库对象的系统软件。

数据库管理系统常用的数学模型包括层次模型、网状模型、关系模型及面向对象模型等。基于关系模型的数据库管理系统成为关系数据库管理系统(Relational Database Management System,RDBMS),且目前关系数据库占据主导地位。

2、关系数据库

关系数据库中“关系”,实质上是一张二维表。

数据库表每一列(字段)都有字段名标记,表中每一行陈为一条记录。

3、结构化查询语言SQL

Structured Query Language,SQL 是一种关系数据库语言,几乎所有关系数据库也都支持SQL。

二、数据库设计相关知识

1、商业知识

2、辅助工具

2.1模型

模型包括数学模型(公式)、描述模型(报表、列表、备忘录)、图形模型(E-R、数据流程图),对事物特征进行抽象过程陈为数据建模。

2.2工具

2.3技术

常用技术:面向对象分析和设计技术、结构化分析和设计技术、软件测试技术、关系数据库设计技术等。

5、编码规范

5.1命名

  • 驼峰标记法
  • 单词间”_”间隔

其它数据库命名原则:函数名使用”_fun”后缀,存储过程名使用”_proc”后缀,视图名使用”_view”后缀,触发器名使用”_trig”后缀,索引名使用”_index”后缀;外键约束名使用”_fk“后缀等。

5.2注释

单行:”#”或”–”

多行:”/*……*/”

5.3书写规范

每个缩进的单位约定是一个Tab。Mysql中begin-end语句块中的第一条语句需要缩进,同一语句块内所有语句上下对齐。

5.4 其它

Mysql内delete等关键字不区分大小写

三、E-R图

关系数据库设计一般都从E-R图(Entity-Relationship Diagram)设计开始。

1、实体和属性

每个实体对应于数据库中的一张数据表

2、关系

在E-R图中,实体间的关系通常用一条线段表示,其关系是双向的。

2.1基数

基数表示一个实体到另一个实体之间关联的数目。关系可分为一对一、一对多、多对多

2.2元

元表示关系所关联的实体个数

2.3关联

关联表示实体间的属性。经常会用来表示实体间发生的事件或者多元关系等等。

3、设计原则

  • 属性应该存在于且只存在于某一个实体或关联,避免统一数据存储于多个数据表而导致数据冗余
  • 实体是一个单独个体,不能存在于另一个实体中成为其属性
  • 同一个实体在同一个E-R图内仅出现一次

四、关系数据库设计

有E-R图生成数据库表步骤如下:

1、为每个实体建立一张数据表

2、为每张表定义一个主键

  • 推荐简单关键字为主键
  • 避免复合主键
  • 添加无意义字段为主键

3、建立新表表示多对多关系

如果表A中的一个字段A对应于表B的主键B,则字段A成为表A的外键

如果两个实体间关系为多对多关系,则需要增加新表表示。

4、为字段选取合适数据类型

5、定义约束条件

  • 主键(primary key)约束:每个表必有
  • 外键(foreign key)约束:外键字段所在表陈为子表,主键字段所在表称为父表
  • 唯一性(unique)约束:如果希望表中某一字段值不重复,可以为该字段添加唯一性约束
  • 非空(not NULL)约束:如果希望该字段值不能取NULL值,可以考虑给该字段添加非空约束
  • 检查(check)约束:用于检查字段的输入值是否满足指定条件
  • 默认值(default)约束:指定一个字段默认值

6、评价关系质量,并改进

6.1使用规范化减少数据冗余

  • 函数依赖:一张表内,两字段值之间的一一对应关系称为函数依赖。
  • 第一范式:一张表中同类字段不重复出现,则满足第一范式。
  • 第二范式:一张表满足第一范式时,每个“非关键字”字段仅仅函数依赖于主键,则满足第二范式。(如学生表、课程表、成绩表分开则满足第二范式)
  • 第三范式:一张表满足第二范式时,且不存在“非关键字”字段函数依赖于任何其它“非关键字”字段,则该表满足第三范式要求。

6.2避免数据经常发生变化

方案一:如在选课系统中避免人数超过课程上限,给课程表添加available字段,表示剩余人数

方案二:由选课表统一得出剩余人数

评价:方案一、二各有利弊。

Print Friendly
赞 (0)
分享到:更多 ()

留言板 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址