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无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题.通 ...
随机推荐
- Spark2.3 HA集群的分布式安装
一.下载Spark安装包 1.从官网下载 http://spark.apache.org/downloads.html 2.从微软的镜像站下载 http://mirrors.hust.edu.cn/a ...
- java中的synchronized同步代码块和同步方法的区别
下面这两段代码有什么区别? //下列两个方法有什么区别 public synchronized void method1(){} public void method2(){ synchronized ...
- python文件的基础操作
import os print(,'-')) print(os.getcwd()) print(,'-')) print(os.listdir()) print(,'-')) print(os.lis ...
- python bottle框架 解决跨域问题的正确方式
经查询,网上有几种说法 https://www.cnblogs.com/EmptyFS/p/6138923.html 我首先查到的就是这个,我采用了文中所说的修改源码的方式, 但是经测试发现,修改源码 ...
- 浅谈.net中事务
.net中的事务 关键几点 概念:1:什么是事务 2:什么时候用事务 3:基本的语法 (1): 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常 ...
- 在Pandas中更改列的数据类型【方法总结】
先看一个非常简单的例子: a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']] df = pd.DataFrame(a) 有什 ...
- vue与自定义元素的关系
你可能已经注意到 Vue.js 组件非常类似于自定义元素--它是 Web 组件规范的一部分.实际上 Vue.js 的组件语法参考了该规范.例如 Vue 组件实现了 Slot API 与 is 特性.但 ...
- [Bayes] KL Divergence & Evidence Lower Bound
L lower是什么? L lower, 既然大于,那么多出来的这部分是什么?如下推导: 得出了KL的概念,同时也自然地引出了latent variable q.
- 大杂烩 -- equals、hashCode联系与区别
基础大杂烩 -- 目录 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Equals 1.默认情况(没有覆盖equals方 ...
- Android 信号处理面面观 之 信号定义、行为和来源
总结: Android中: Sending signal. PID: XXX SIG: 3 ====>打印trace 原文:http://blog.csdn.net/rambo2188/ar ...