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无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题.通 ...
随机推荐
- Android 得到照片位置信息
目前Android SDK定义的Tag有:TAG_DATETIME 时间日期TAG_FLASH 闪光灯TAG_GPS_LATITUDE 纬度TAG_GPS_LATITUDE_REF 纬 ...
- MDK-ARM输出HEX文件重命名设置
输出的可执行文件和库的名称就是在这里定义.比如我们常见输出Hex文件,其名称就是这里定义的.
- Socket网络编程--简单Web服务器(3)
上一小节已经实现了浏览器发送请求,然后服务器给出应答信息,然后浏览器显示出服务器发送过来的网页.一切看起来都是那么的美好.这一小节就准备实现可以根据地址栏url的不同来返回指定的网页.目前还不考虑带参 ...
- 【Linux高级驱动】平台设备驱动机制的编程流程与编译进内核
[平台设备驱动机制的编程流程] [如何将驱动静态的编译进内核镜像] 1.添加资源(dev-led.c) 1.1:一般来说,系统习惯上将资源放在arch/arm/plat-samsung/目录中 cp ...
- Android Studio原生库创建示例
[时间:2017-07] [状态:Open] [关键词:Android,Android Studio,gradle,native,c,c++,cmake,原生开发] 0 引言 最近在工作中遇到了升级A ...
- THE OVERARCHING PROCESS OF TEST DESIGN
THE OVERARCHING PROCESS OF TEST DESIGN -Test note of “Essential Software Test Design” 2015-08-27 Con ...
- ECSHOP后台编辑器不能上传中文名图片的解决办法
在后台上传商品图片的时候,如果你选择一个中文名称的图片,那么上传后会产生乱码,导致图片显示不出来. 下面说一种解决办法: 使用“年月日时分秒 + 6个随机字符”做为文件名,如 201010161356 ...
- Navi.Soft31.微信WinForm框架(含下载地址)
1.概述 1.1应用场景 微信的出现,改变了我们日常生活.而微信公众平台的出现,使我们每个人都可能成为一个品牌,微商的普及.微店越来越多.越来越多的人,借助微信公众平台,实现了自己的梦想 在此背景环境 ...
- Java知多少(55)线程
和其他多数计算机语言不同,Java内置支持多线程编程(multithreaded programming). 多线程程序包含两条或两条以上并发运行的部分.程序中每个这样的部分都叫一个线程(thread ...
- Spark学习笔记——RDD编程
1.RDD——弹性分布式数据集(Resilient Distributed Dataset) RDD是一个分布式的元素集合,在Spark中,对数据的操作就是创建RDD.转换已有的RDD和调用RDD操作 ...