MySQL的一些概念
数据库与服务器、客户端的层次关系

关于数据库
程序中需要存储数据的方式:
1 变量(列表、元组、集合、字典、嵌套)
2 外存(文件)(*.ini)
3 表格、Excel(*.xls、*.xlsx、*.csv)
4 结构化数据库
数据库中的基本概念
记录(Record):数据库中的一行
字段(Field):数据库中的一列
实体(Entity):现实中客观存在并可以被区分的事物。比如:学生、课程
属性(Attribute):实体锁具有的特征。比如:对于学生实体,所体现的属性有:学号、姓名、年龄、性别
关系(RelationShip):实体与实体之间的依赖。包括:一对一、一对多、多对多。
以上三者(实体、属性、关系)可以组成ER图(实体关系图)
通过Visio的数据库模型图建立表:
建表的时候需要考虑范式的约束
一般有如下范式:1NF 2NF 3NF BCNF 4NF 5NF
1NF:属性不可分
|
姓名 |
电话号码 |
年龄 |
|
|
座机 |
手机 |
||
|
张三 |
020-84444444 |
13777777777 |
23 |
|
李四 |
020-85555555 |
13888888888 |
34 |
如上,因为电话属性可以拆分为座机和手机,所以不满足1NF,修改如下:
|
姓名 |
座机 |
手机 |
年龄 |
|
张三 |
020-84444444 |
13777777777 |
23 |
|
李四 |
020-85555555 |
13888888888 |
34 |
2NF:符合1NF。非主属性完全依赖于关键字
|
学号 |
姓名 |
课程编号 |
考试成绩 |
|
101 |
张三 |
201 |
73 |
|
102 |
李四 |
202 |
53 |
该表中的依赖关系:
学号——姓名
(学号、课程编号)——考试成绩
该表的关键字是:(学号、课程编号)
这里的非主属性姓名依赖于学号,是关键字的一部分,而不是全部。所以不满足2NF
需要拆分成两个表
|
学号 |
姓名 |
|
101 |
张三 |
|
102 |
李四 |
|
学号 |
课程编号 |
考试成绩 |
|
101 |
201 |
73 |
|
102 |
202 |
53 |
这样就满足2NF了
3NF:符合1NF和2NF,并且消除传递依赖
|
学号 |
课程编号 |
老师 |
职称 |
|
101(张三) |
201(高等数学) |
张老湿 |
砖家 |
|
102(李四) |
202(大学英语) |
陈教授 |
叫兽 |
|
103(王五) |
202(大学英语) |
陈教授 |
叫兽 |
显然满足1NF
该表的关键字是:(学号、课程编号)。后面的非主属性完全依赖于关键字,所以满足2NF
(学号、课程编号)——上课老师
老师——职称
像这种A依赖于B,B依赖于C的设计,就称为传递依赖,是不满足3NF
需要拆分成两个表
|
学号 |
课程编号 |
老师 |
|
101(张三) |
201(高等数学) |
张老湿 |
|
102(李四) |
202(大学英语) |
陈教授 |
|
103(王五) |
202(大学英语) |
陈教授 |
|
老师 |
职称 |
|
张老湿 |
砖家 |
|
陈教授 |
叫兽 |
这样就满足了3NF的标准了
后面还有BCNF、4NF、5NF。但是我们设计数据库一般要求达到3NF即可
MySQL的一些概念的更多相关文章
- mysql 数据库基本概念
mysql 数据库基本概念 一.数据库的集中控制优点1.降低存储数据的冗余度2.更高的数据一致性3.存储的数据可以共享4.可以建立数据库所遵循的标准5.便于数据维护完整性6.能够实现数据的安全性 二. ...
- 理解MySQL——架构与概念
写在前面:最早接触的MySQL是在三年前,那时候MySQL还是4.x版本,很多功能都不支持,比如,存储过程,视图,触发器,更别说分布式事务等复杂特性了.但从5.0(2005年10月)开始,MySQL渐 ...
- 数据库 MySQL 之 基本概念
数据库 MySQL 之 基本概念 浏览目录 概述 数据库的特点 数据库的分类 选择MySQL的理由 & MariaDB 介绍 下载及安装 SQL介绍 一.概述 1.数据(data) 存储在表中 ...
- Mysql锁机制--概念、分类及基础命令
Mysql 系列文章主页 =============== 1 概念 在 Java 程序中,当多线程并发访问某个资源的时候,如果有非线程安全的操作,那么需要通过加锁来保护之.同理,在 Mysql 中,如 ...
- jsp/servlet/mysql/linux基本概念和操作
一.什么是OOP编程? 面向对象,以结果为导向,并封装整个过程,并尽可能地增加代码的复用性和可扩展性...... 二.Junit? JUnit是一个java语言的单元测试框架.Junit测试时程序员测 ...
- MySQL的基本概念与操作
数据库的基本概念什么是数据库?用于存储和管理数据的仓库.数据库的特点:持久化存储数据的.其实数据库就是一个文件系统方便存储和管理数据使用了统一的方式操作数据库 – SQL数据库的分类:数据库根据存储采 ...
- MySQL的基本概念和数据操作
1.连接服务器 数据库是CS模式的软件,所以要连接数据库必须要有客户端软件.MySQL数据库默认端口号是3306 1.1window界面连接服务器 1.2通过web窗体 ...
- MySQL的简单概念及软件安装
数据库的简介 一.数据库的基本概念:数据.数据库.数据库管理系统.数据库系统 数据:数据(Data)是用来记录信息的可识别符号,是信息的具体表现形式. 数据库:(1)数据库(Database,DB)是 ...
- MYSQL数据库基础概念
数据库的发展史 1.萌芽阶段:文件系统 使用磁盘文件来存储数据2.初级阶段:第一代数据库 出现了网状模型.层次模型的数据库3.中级阶段:第二代数据库 关系型数据库和结构化查询语言4.高级阶段:新一代数 ...
- Mysql基本原理和概念
一.引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题.通 ...
随机推荐
- openwrt 水星mw4530r-v1 搞搞搞
感觉周围最实用的搞硬件非路由器莫属,可惜配置都不咋的高,选择水星这款就是看中它的性价比和openwrt的支持,真乃刷机神器啊,还可以挂载usb就更绝了,价格没得说. 另外128mb的rom对大部分功能 ...
- [k8s]zookeeper集群在k8s的搭建(statefulset模式)-pod的调度
之前一直docker-compose跑zk集群,现在把它挪到k8s集群里. docker-compose跑zk集群 zk集群in k8s部署 参考: https://github.com/kubern ...
- 常用七种排序的python实现
1 算法复杂度 算法复杂度分为时间复杂度和空间复杂度.其中, 时间复杂度是指执行算法所需要的计算工作量:而空间复杂度是指执行这个算法所需要的内存空间. 算法的复杂性体现在运行该算法时的计算机所需资源的 ...
- 利用OCR识别扫描的jpg、tif文件的文字
第一步:下载老马哥的从 office和sharepoint 提取出来的注册表和dll http://115.com/file/dpa4qrt2 或者直接安装office和sharepoint2007 ...
- [20170629]带过滤的复制项UI操作导致订阅全部初始化问题
[问题] 带过滤的复制项UI操作导致订阅全部初始化,但是想不全部初始化,只初始化对应的复制项 [解决] 1.如果修改过滤项,可以直接执行,然后生成快照: -- Adding the article ...
- CentOS7安装RabbitMQ
1.先安装Erlang rpm -Uvh http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm 2.安 ...
- 解决Android微信支付官方demo运行失败
Android微信支付官方demo运行失败,在此简单记录一下解决步骤 1.httpclient错误 官方给的demo是eclipse的,打开之后提示httpclient的错误,我知道在as下解决htt ...
- numpy的介绍——总览
为什么有numpy这个库呢? 1. 准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[ ...
- golang net/http 包
https://studygolang.com/articles/9467 https://www.jianshu.com/p/be3d9cdc680b 客户端: 用来发送请求, 并处理返回结果. 涉 ...
- [algorithm] 汉诺塔问题
汉诺塔是根据一个传说形成的一个问题.汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗 ...