技术标签: 恰饭 经验分享 每天学习一点点 mysql 数据库
注意:信息世界又称概念模型,机器世界又称数据模型
一个表的码可以有多个,但主码只能有一个。
例:借书表(学号,姓名,书号,书名,作者,定价,借期,还期)
规定:学生一次可以借多本书,同一种书只能借一本,但可以多次续借。
1.两实体集间实体之间的联系
1:1联系
1:n联系
m:n联系
2.同一实体集内实体之间的联系
实体型:□
属性:○
联系: ◇
说明:
① E-R图作为用户与开发人员的中间语言。
② E-R图可以等价转换为层次、网状、关系模型。
举例:学校有若干个系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授每人各带若干研究生。每个班有若干学生,每个学生选修若干课程,每门课程有若干学生选修。用E-R图画出概念模型。
1.重要术语:
2.特点:
小结:数据中有三种类型,DBMS就有三种类型,DB亦有三种类型。
模式:是数据库中全体数据的逻辑结构和特征的描述。
模式只涉及数据库的结构;
模式既不涉及应用程序,又不涉及数据库结构的存储;
外模式:是模式的一个子集,是与一个应用程序有关的逻辑表示。特点:一个应用程序只能使用一个外模式,但同一个外模式可为多个应用程序使用。
内模式:描述数据库结构的存储,但不涉及物理记录。
2.两级映象
1. 外模式/模式映象:保证数据库的逻辑独立性;
2. 模式/内模式映象:保证数据库的物理独立性;
3.两级映象的意义
DBMS的功能:负责对数据库进行统一的管理与控制。
例如:student ( sno, sname, ssex, sage, sdept)
Sc ( sno, cno, grade)
Sc的主码为:(sno,cno);外码为:sno
1.确定局部范围:通常把系统涉及的各个部门或各个主要功能作为局部。
2.确定实体与属性
(1)联系的属性:必须包含相关联的各实体型的主码。
1:1联系:可以是相关联的任一实体型的主码。
1:n联系:必须是n方实体型的主码。
m:n联系:必须是相关联的各实体型的主码之和。
(1)把每个实体型转换为一个关系模式。
(2)1:1联系:可以消化到相关联的任一实体型对应的关系模式中。
班长( XH, XM, NL,BH)
班级(BH,RS)
(3)1:n联系:可以消化到n方实体名对应的关系模式中。
例:一个班级有多名学生,每名学生只能属于一个班级。每一个班级有一名班长,他是学生中的一员。
学生(XH,XM,NL,BH)
班级(BH,RS,XH)
↓ →班长的学号
(4)m:n联系:必须转换为一个关系模式,并且不能消化。
例:
学生(sno,sname, ssex, sage, sdept)
课程(cno, cname,credit)
选修(sno, cno, grade)
(5)多元联系:不能消化
例:
例: 班级( 班名,人数) 学生(学号,姓名,性别,密码,班名) 在学生表中,班名的取值必须是班级表[班名]的值或空值。
设关系R、S的结构完全相同,则:
思考:(R∩S)∪(R-S)=?(结果就是R)
R×S:设R有m个属性,K1个元组;S有n个属性,K2个元组,则R×S含有(m+n)个属性,(K1×K2)个元组。
选择:从关系R中选择满足条件的元组。记为:
投影:从关系R中选择若干属性组成新的关系,并把新关系的重复元组去掉。记为:
条件连接:将两关系按一定条件连接成一个新关系,记为:
说明:条件连接:两关系可以没有公共属性,若有公共属性,则新关系含有重复属性。
说明:
设x→y,如果y是x的子集,则该依赖是平凡的。如:
Sno,sname→sno
如果y中至少有一个属性不在x中,则该依赖是非平凡的。如:
Sno,sname→sname,sdept
如果y中没有一个属性在x中,则该依赖为完全非平凡的。
HK | KH | KM | XM | DZ | CJ |
---|---|---|---|---|---|
961 | -C1- | -OS- | -高明- | -D1- | -70- |
962 | -C2- | -DBS- | -高飞- | -D2- | -72- |
962 | -C4- | -AI- | -高飞- | -D2- | -80- |
962 | -C1- | -OS- | -高明- | -D1- | -75- |
963 | C1 | OS | 高明 | D1 | 90 |
答:存在问题
如:新开课程没有学生选修时,新开课程的课程号、课程名插不进去。
如选修某门课的学生毕业了,在删除学生信息的同时,把课程信息也删除掉。
结论:一个好的关系模式应满足:
什么叫范式?
答:指一个关系的非主属性函数依赖于主码的程度。
什么叫关系规范化?
答:指一个关系从低级范式向高级范式的转换过程。
应用:关系规范化理论应用在逻辑结构设计阶段。
1.第一范式(1NF)
2.第二范式(2NF)
① 定义:若关系R∈1NF,且它的每个非主属性都完全依赖于主码,则称R∈2NF。
② 存在问题:
③ 原因:存在非主属性对主码的传递依赖。
④ 解决办法:将R2 一分为二
3.第三范式(3NF)
① 定义:若关系R∈2NF,且它的每个非主属性都不传递依赖于主码,则称R∈3NF。
② 规范化过程
非规范关系
↓使每个属性都不能再分
1NF
↓消去非主属性对主码的部分依赖
2NF
↓消去非主属性对主码的传递依赖
3NF
BCNF:关系模式R<U,F>中,如每一个决定因素都包含码,则R是BC范式。如果R属于BCNF 那么R一定属于3NF,反之未必。
4.结论
一、两种身份验证模式:
windows
模式:用户只能使用windows
登录名登录SQL
Server
windows
登录名或SQL
Server
登录名登录SQL
Server
二、两种身份验证:
用户登录到SQL Serve
r时,必须使用特定的登录名和密码标识自己。
Windows
身份验证:用户登录到SQL Server
时,使用操作系统当前的登录名和密码。SQL Server
身份验证:用户登录到SQL Server
时,必须显式提供登录名和密码。常用安全性控制方法:用户标识和控制、存取控制、视图、审计、数据加密。
一、索引的概念:
二、索引的类型:
注:一个表只能建立一个聚集索引,但可以建立若干个非聚集索引。
三、创建索引
1.自动创建索引:
一、视图的特点:
select
语句;1.什么叫事务?
答: 事务是用户定义的一组操作序列。
1. 事务的属性
丢失修改
:指事务1
与事务2
从数据库中读入同一数据并修改,事务2的提交结果破坏
事务1提交的结果,导致事务1的修改被丢失。不可重复读
:指事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。读脏数据
:指事务1修改某一数据后,事务2读取该数据,事务1由于某种原因被撤销
,这时数据又恢复
到原值,事务2读到的数据与数据库中的数据不一致
,称为“脏”数据。目标:确保DB中的数据一致性。
并发事务正确性的原则 :几个事务的并发执行是正确的,当且仅当其结果与任何一个串行执行的结果相同。
并发控制的方法 DBMS一般采用“封锁”技术,保证并发操作的可串行化。
1. 什么叫封锁?
答:SQL Server
自动强制封锁,并且会将封锁粒度控制在合适的级别,用户不必考虑封锁问题。
2. 封锁类型
不能
读取和修改A。只能读A
,不能修改A
。3. 封锁粒度
封锁对象可以是属性列、元组、关系、整个数据库
。封锁对象的大小称为封锁粒度。封锁粒度越小,并发度越高,但并发控制的开销越大。
4. 封锁协议
事务T在修改数据A之前,必须对其加X锁,直到事务结束才释放。
事务T在读取数据A之前,必须对其加S锁,直到事务结束才释放。 遵循封锁协议,可以解决三种数据不一致性问题:
- 丢失修改
- 不可重复读
- 读“脏”数据
封锁技术可以解决并发操作的不一致性问题,但也带来新的问题,即死锁和活锁。
① 定义:两个事务已经各自锁定一个数据,但是又要访问被对方锁定的数据,造成了循环等待,称为死锁。
避免死锁的方法:
事务可串行化调度:两段锁协议.
只有把抱怨环境的心情化为上进的力量,才是成功的保证。——罗曼·罗兰
一,转换list中的数据格式 str --> float(一)使用自定义函数def str2float(list)strlist=[]for i in list:strlist.append(float(i))return strlist小技巧:1.转换千分符的数字(str)为float型由于金融行业中的数字常常是带有千分符的,这导致这样的数字不能直接用float()来转换,因为要先处理一下str...
1. 进入slitaz系统sudo su - 切换为root用户2. fdisk -l Device Boot Start End Blocks Id System/dev/sda1 * 1 9562 76800000 7 HPFS/NTFS/dev/sda2 ...
转自:http://wiki.apache.org/jmeter/Controlling%20Bandwidth%20in%20JMeter%20to%20simulate%20different%20networksHow to simulate network bandwidth in JMeter?JMeter let's you simulate netwo
一、Linux操作系统操作springboot购物项目:xftp查找jar并传输Linux、opt文件夹1>java -jar shoop-0.0.1-SNAPSHOT.jar(运行Jar包)2>网页请求服务器3>ps -ef|grep java(查询java进程)二、步骤:1.vim start.bash添加权限:chmod +x 文件名,chmod -R 777...
在扩展包开发开始之前 ,先不要着急动手,先让我们一块来了解了解下面关于PHP扩展包的基础知识。(1)什么是扩展包,他的作用是什么?有什么优点?(2)扩展由那几部分构成?(3)你的扩展包是解决什么问题的?考虑扩展性,后面的持续迭代,根据你的经验,应该选用什么设计模式?(4)开发和测试;(5)发布到 GitHub 与 Packagist 包的流程。第一个问题:PHP扩展包是用于项目增强的,用于项目增强...
ReasonCode:32107消息:不允许使用Callback方法断开连接LocalizedMsg:不允许使用Callback方法断开连接例外:不允许使用Callback方法断开连接(32107)不允许使用Callback方法断开连接(32107)at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttExcept...
背景我们在使用 Cocos 和 Native 进行交互的时候,发现体验并不是特别的友好。如下所示,为我们项目当中的一段代码(代码已脱敏),当检测到发生了 js 异常,我们需要通知 Native 端去做一些处理。jsException: function (scence, msg, stack) { if (cc.sys.isNative && cc.sys.os === cc.sys.OS_ANDROID) { jsb.reflection.callStatic
在开发过程中,经常会遇到,当条件产生有前后空格时 导致查询为空,或发生异常,如果对于每个参数都在controller层后者实现层来去除空格的话,会造成代码的重复,以及在工作中很浪费时间 这个时候可以使用注解来去除前端传递参数的空格,这里只做了前后去除空格,没有做去除中间的空格第一步 创建注解类/** * 描述:去除首尾空格的注解 * @author Administrator */@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUN
public class Compression { /// /// 对字符串进行压缩 /// /// 待压缩的字符串 /// 压缩后的字符串 public static string CompressString(string str) {
我目前正在尝试使用Selenium WebDriver(JAVA)2.53和Firefox 43.0执行TOR 6.0.4.我已经按照这篇文章Using Selenium WebDriver with Tor的说明进行操作,但是将TOR的profilePath加载到Firefox Binary时出现错误.我已经看到可以通过将TOR profile.default存档加载到firefox binat...
If you’re on vacation, the last thing you want is to find out thatsomeone broke into your house. There’s really not much you can do about it if you’re halfway around the world, but if you have a trus...