数据库与服务器、客户端的层次关系

关于数据库

程序中需要存储数据的方式:

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的一些概念的更多相关文章

  1. mysql 数据库基本概念

    mysql 数据库基本概念 一.数据库的集中控制优点1.降低存储数据的冗余度2.更高的数据一致性3.存储的数据可以共享4.可以建立数据库所遵循的标准5.便于数据维护完整性6.能够实现数据的安全性 二. ...

  2. 理解MySQL——架构与概念

    写在前面:最早接触的MySQL是在三年前,那时候MySQL还是4.x版本,很多功能都不支持,比如,存储过程,视图,触发器,更别说分布式事务等复杂特性了.但从5.0(2005年10月)开始,MySQL渐 ...

  3. 数据库 MySQL 之 基本概念

    数据库 MySQL 之 基本概念 浏览目录 概述 数据库的特点 数据库的分类 选择MySQL的理由 & MariaDB 介绍 下载及安装 SQL介绍 一.概述 1.数据(data) 存储在表中 ...

  4. Mysql锁机制--概念、分类及基础命令

    Mysql 系列文章主页 =============== 1 概念 在 Java 程序中,当多线程并发访问某个资源的时候,如果有非线程安全的操作,那么需要通过加锁来保护之.同理,在 Mysql 中,如 ...

  5. jsp/servlet/mysql/linux基本概念和操作

    一.什么是OOP编程? 面向对象,以结果为导向,并封装整个过程,并尽可能地增加代码的复用性和可扩展性...... 二.Junit? JUnit是一个java语言的单元测试框架.Junit测试时程序员测 ...

  6. MySQL的基本概念与操作

    数据库的基本概念什么是数据库?用于存储和管理数据的仓库.数据库的特点:持久化存储数据的.其实数据库就是一个文件系统方便存储和管理数据使用了统一的方式操作数据库 – SQL数据库的分类:数据库根据存储采 ...

  7. MySQL的基本概念和数据操作

    1.连接服务器 数据库是CS模式的软件,所以要连接数据库必须要有客户端软件.MySQL数据库默认端口号是3306         1.1window界面连接服务器         1.2通过web窗体 ...

  8. MySQL的简单概念及软件安装

    数据库的简介 一.数据库的基本概念:数据.数据库.数据库管理系统.数据库系统 数据:数据(Data)是用来记录信息的可识别符号,是信息的具体表现形式. 数据库:(1)数据库(Database,DB)是 ...

  9. MYSQL数据库基础概念

    数据库的发展史 1.萌芽阶段:文件系统 使用磁盘文件来存储数据2.初级阶段:第一代数据库 出现了网状模型.层次模型的数据库3.中级阶段:第二代数据库 关系型数据库和结构化查询语言4.高级阶段:新一代数 ...

  10. Mysql基本原理和概念

    一.引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题.通 ...

随机推荐

  1. T-Pot平台cowrie蜜罐暴力破解探测及实现自动化邮件告警

    前言:Cowrie是基于kippo更改的中交互ssh蜜罐, 可以对暴力攻击账号密码等记录,并提供伪造的文件系统环境记录黑客操作行为, 并保存通过wget/curl下载的文件以及通过SFTP.SCP上传 ...

  2. 【Spark深入学习 -10】基于spark构建企业级流处理系统

    ----本节内容------- 1.流式处理系统背景 1.1 技术背景 1.2 Spark技术很火 2.流式处理技术介绍 2.1流式处理技术概念 2.2流式处理应用场景 2.3流式处理系统分类 3.流 ...

  3. 项目在iOS11上遇到的小问题

    ​iOS11正式版出了这么久了,在忙完新版本开发,写下在iOS11上的一些小问题. 1  App图标不显示 现象:升级到iOS11系统下自己的项目桌面app图标不见了 出现这种情况我还以为自己手动删除 ...

  4. Android ShareUserId 使用总结

    今天讲一下Android里面经常看到却不太留意的知识点——ShareUserId,在Android里面每个app都有一个唯一的linux user ID,则这样权限就被设置成该应用程序的文件只对该用户 ...

  5. 解决 meld 出现 locale.setlocale(locale.LC_ALL,'') 失败的问题

    . . . . . meld 是一款免费的文件比较工具,官网地址:http://meldmerge.org/ 在 Linux 环境使用 meld 的时候,可能会由于语言区域的配置问题导致它无法启动,会 ...

  6. 【iCore4 双核心板_FPGA】例程六:触发器实验——触发器的使用

    实验现象: 按下按键,绿色led亮灭交互: //--------------------module_rst_n---------------------------// module trigger ...

  7. 【iCore1S 双核心板_ARM】例程十二:DMA实验——存储器到存储器的传输

    实验原理: DAM(直接存储器访问)传输不需要占用CPU,可以在存储器至存储器实现高速的数据 传输.本实验采用DAM2控制器的数据流0,选用通道0进行数据传输.通过LED的颜色来 判断传输是否成功. ...

  8. 教程:Spagobi开源BI系统 Console报表设计教程

    Console Designer 1 Console Designer Console Designer 1.1 Introduction 1.2 Dataset Tab 1.3 Summary Pa ...

  9. Linux systemd limits

    https://www.cnblogs.com/IMxY/p/8941022.html limits 关于Centos 7 / RHEL 7 中的limits要了解以下几点: CentOS 7 / R ...

  10. JQuery Easyui引入easyui-lang-zh_CN.js后出现乱码的问题解决方法

    最近使用Easyui做项目,发现引入easyui-lang-zh_CN.js单元后页面会出现乱码,无论设置<meta>.还是Response都不能解决问题.用记事本打开easyui-lan ...