数据库原理笔记(1).
- 格式:doc
- 大小:143.51 KB
- 文档页数:13
tidb数据库核心原理与架构笔记TiDB是一种分布式数据库系统,以其可伸缩性、强一致性和高可用性而受到广泛关注。
本文将深入探讨TiDB的核心原理和架构,以及它所提供的关键功能和优势。
一、TiDB的概述TiDB是PingCAP开发并维护的一种开源分布式数据库系统,它通过将关系型数据库和分布式系统相结合,实现了水平扩展和高性能的特性。
相比传统的单机数据库,TiDB能够处理海量数据和高并发访问的需求。
二、TiDB的核心原理1. 分布式架构TiDB采用分布式架构,将数据分散存储在多个节点上,并通过Raft协议实现数据的一致性。
每个节点都是平等的,具有相同的角色和功能,可以承担查询、事务和存储的任务。
数据分片和复制策略确保了数据的可靠性和高可用性。
2. 一致性哈希算法TiDB使用一致性哈希算法将数据分片,并将每个片段分散存储在不同的节点上。
这种分片方式能够保证数据的均衡分布和负载均衡,同时实现了水平扩展的能力。
3. 分布式事务TiDB支持分布式事务,通过二阶段提交协议(2PC)确保事务的原子性和一致性。
在分布式环境下,事务管理变得更加复杂,但TiDB通过高效的协议和锁机制,实现了事务的可靠性和高性能。
4. SQL优化器TiDB的SQL优化器能够解析和优化复杂的SQL查询语句,以提高查询性能和资源利用率。
它采用了基于成本的优化策略,通过计算查询的执行代价和选择最佳的执行计划,使得查询结果更加高效和准确。
三、TiDB的架构1. TiDB ServerTiDB Server是TiDB的核心组件,负责处理SQL查询和事务管理。
它通过解析、优化和执行查询计划,将查询请求发送到合适的存储节点,并返回查询结果给客户端。
2. TiKVTiKV是TiDB的分布式存储引擎,负责实际的数据存储和读写操作。
TiKV使用RocksDB作为底层存储引擎,通过Raft协议实现数据的一致性和可靠性。
每个TiKV节点都包含多个Region,通过Leader和Follower之间的复制机制确保数据的一致性和高可用性。
第一章数据库概论1.人工管理阶段,文件系统阶段,数据库阶段,高级数据库阶段(对象数据库技术,分布式数据库系统,开放数据库互连技术,xml数据库技术,现代信息集成技术)2.数据描述:概念设计中:实体,实体集,属性,实体标识符;逻辑设计中:字段,记录,文件,关键码;物理设计中:位,字节,字,块,桶,卷;3.概念模型,逻辑模型(层次,网状,关系,对象),外部模型,内部模型;4.三层模式(外模式,逻辑模式,内模式),两级映像(外模式/逻辑模式映像,逻辑模式/内模式映像)5.数据库系统:数据库,硬件,软件,数据库管理员第二章关系模型和关系运算理论1.超键:能唯一标识元组的属性或属性集。
候选键:不含有多余属性的超键主键:用户选作元祖标识的候选键。
外键:是其他模式的主键。
实体完整性规则,参照完整性规则,用户定义的完整性规则关系模式的三层体系结构:关系模式,子模式,存储模式2.关系代数的5个基本操作:并,差,笛卡尔积,投影,选择;关系代数的4个组合操作:交,连接,自然连接,除法。
关系代数的7个扩充操作:改名,广义投影,赋值,外连接,外部并,半连接,聚集操作3.关系代数表达式的启发式优化算法:尽可能早的执行选择操作;尽可能早的执行投影操作;避免直接做笛卡尔积第三章关系数据库语言SQL1.SQL的组成:数据定义语言,数据操纵语言,嵌入式,数据控制语言2.数据定义:数据类型ok,数据库,数据表,索引的创建等ok。
3.数据查询,数据更新ok。
4,视图,嵌入式,动态SQL语句,存储过程。
第四章关系数据库的规范化设计1.定义1:函数依赖:设有关系模式R(U),U为属性集,x、y为U的子集,函数依赖(FD)是形为X→Y的一个命题,只要r是R的当前关系,对r中任意两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么称FDX→Y在关系模式R(U)中成立。
定义2:如果X→Y和Y→X同时成立,则可记为X←→Y。
定义3:设F是在关系模式R上成立的函数依赖的集合,X→Y 是一个函数依赖。
数据库原理与应用重要知识点总结1.数据库的基本概念数据库是指存储、管理和组织数据的集合,它通过一系列的操作来实现对数据的有效管理和利用。
数据库管理系统(DBMS)则是对数据库进行管理的软件系统。
2.数据模型数据模型是描述数据库结构的方式,常见的数据模型有层次模型、网状模型和关系模型。
其中,关系模型在实际应用中应用最广泛。
3.关系模型关系模型通过表格的形式来表示数据,表格中的行表示记录,列表示字段。
表格之间可以建立关系,例如通过外键实现表格之间的关联。
4.数据库管理系统(DBMS)DBMS是对数据库进行管理和操作的软件系统,它提供了数据的存储、检索、更新和删除等功能。
常见的DBMS有MySQL、Oracle、SQL Server 等。
5.SQL语言SQL(Structured Query Language)是用于访问和管理关系数据库的语言,它包括数据定义语言(DDL)、数据查询语言(DQL)、数据操作语言(DML)和数据控制语言(DCL)等。
6.数据库设计数据库设计是指根据系统需求和功能要求,将现实世界中的实体和关系转化为数据库中的表格和关系的过程。
数据库设计需要考虑数据的完整性、安全性、可扩展性等方面。
7.关系数据库规范化关系数据库规范化是将数据库中的表格按照一定的条件和规则进行分解和重组的过程。
目的是减少数据冗余、提高数据的存储效率和查询性能。
8.数据库索引数据库索引是对数据库中的数据进行快速访问的数据结构,它可以提高查询效率。
常见的索引类型有B树索引、哈希索引和全文索引等。
9.数据库事务数据库事务是一系列的数据库操作,它要么全部完成,要么全部不完成。
事务具有ACID属性,即原子性、一致性、隔离性和持久性。
10.数据库安全性数据库安全性是指保护数据库中的数据免受恶意攻击和非法访问的能力。
数据库的安全措施包括用户认证、访问控制、数据加密等。
11.数据库备份与恢复数据库备份是指将数据库中的数据和结构以其中一种形式进行复制和存储,以防止数据丢失。
mysql学习笔记(⼀)之mysqlparameter基础琐碎总结-----参数化查询参数化查询(Parameterized Query )是指在设计与数据库链接并访问数据时,在需要填⼊数值或数据的地⽅,使⽤参数 (Parameter) 来给值,这个⽅法⽬前已被视为最有效可预防SQL注⼊攻击 (SQL Injection) 的攻击⼿法的防御⽅式。
下⾯将重点总结下Parameter构建的⼏种常⽤⽅法。
说起参数化查询当然最主要的就是如何构造所谓的参数:⽐如,我们登陆时需要密码和⽤户名,⼀般我们会这样写sql语句,Select * from Login where username= @Username and password = @Password,为了防⽌sql注⼊,我们该如何构建@Username和@Password两个参数呢,下⾯提供六种(其实⼤部分原理都是⼀样,只不过代码表现形式不⼀样,以此仅作对⽐,⽅便使⽤)构建参数的⽅法,根据不同的情况选⽤合适的⽅法即可:说明:以下loginId和loginPwd是户登陆时输⼊登陆⽤户名和密码,DB.conn是数据库连接,⽤时引⼊using System.Data.SqlClient命名空间⽅法⼀:SqlCommand command = new SqlCommand(sqlStr, DB.conn);command.Parameters.Add("@Username", SqlDbType.VarChar);command.Parameters.Add("@Pasword", SqlDbType.VarChar);command.Parameters["@Username"].Value = loginId;command.Parameters["@Pasword"].Value = loginPwd;⽅法⼆:SqlCommand command = new SqlCommand();command.Connection = DB.conn;mandText = sqlStr;command.Parameters.Add(new SqlParameter("@Username", loginId));command.Parameters.Add(new SqlParameter("@Pasword", loginPwd));⽅法三:Sqlcommand cmd=new Sqlcommand(sqlStr, DB.conn);cmd.parameters.add("@Username",DbType.varchar).value=loginId;cmd.parameters.add("@Pasword",DbType.varchar).value=loginPwd;⽅法四:Sqlcommand cmd=new Sqlcommand(sqlStr, DB.conn);cmd.parameters.addwithvalue("@Username",loginId);cmd.parameters.addwithvalue("@Pasword",loginPwd);⽅法五:Sqlcommand cmd=new Sqlcommand(sqlStr, DB.conn);SqlParameter para1=new SqlParameter("@Username",SqlDbType.VarChar,16);para1.Value=loginId;cmd.Parameters.Add(para1);SqlParameter para2=new SqlParameter("@Pasword",SqlDbType.VarChar,16);para2.Value=loginPwd;cmd.Parameters.Add(para2);⽅法六:SqlParameter[] parms = new SqlParameter[]{new SqlParameter("@Username", SqlDbType.NVarChar,20),new SqlParameter("@Pasword", SqlDbType.NVarChar,20),};SqlCommand cmd = new SqlCommand(sqlStr, DB.conn);// 依次给参数赋值parms[0].Value = loginId;parms[1].Value = loginPwd;//将参数添加到SqlCommand命令中foreach (SqlParameter parm in parms){cmd.Parameters.Add(parm);}法和实现⽅法的不同,也可以说是语法糖,但后记:鉴于园友对dedeyi,⿁⽕飘荡,guihwu的疑问,我在写⼀个说明。
数据库原理笔记小伙伴们!今天咱们一起来聊聊数据库原理这个有趣的话题。
你可别小看它哦,它就像是一个超级大的“数据仓库”,能把各种各样的数据都整理得井井有条。
想象一下,咱们生活中的数据那可真是五花八门啊!有你的购物记录,记录着你买过的那些可爱的小玩意儿;有公司的员工信息,包含着每个人的小秘密和工作情况;还有图书馆里的图书资料,那是知识的海洋。
要是没有数据库,这些数据就像一群调皮的孩子,到处乱跑,让人找不到头绪。
数据库的设计就像是给这些调皮的数据孩子们建了一个漂亮又规整的家。
咱得先想好这个家怎么布局,也就是设计数据库的结构。
比如说,要建一个学生管理系统的数据库,咱得有学生的基本信息表,像学号、姓名、年龄这些,这就好比是给每个学生发了一张身份证。
还有课程表,记录着各种课程的名字、学分啥的,就像是课程的名片。
再加上成绩表,把学生和课程联系起来,看看每个学生在每门课上的表现,这就像是给学生和课程牵红线啦,哈哈!数据库里的数据可不能随便乱放,得遵循一定的规则,这就是数据完整性约束。
就好比家里的东西都有它固定的摆放位置,不能乱丢。
比如说,学号这个东西,那可是每个学生独一无二的标识,不能有重复的,不然到时候老师都分不清谁是谁啦!还有年龄,总不能填个负数吧,那不成了从未来穿越过来的学生啦,哈哈,开个玩笑!这些规则就是为了保证数据的质量,让数据库里的数据都是靠谱的。
那怎么往这个“数据之家”里放数据呢?这就涉及到数据的插入操作啦。
想象你是一个勤劳的小管家,把新的数据一个一个地放到它们该待的地方。
比如说来了一个新同学,你就得把他的信息小心翼翼地放进学生基本信息表里面,就像把一个新玩具放到玩具箱的合适位置一样。
当然啦,数据也不是一成不变的,有时候需要修改。
比如说某个同学转专业了,那他的专业信息就得改一改,这就像给玩具重新贴上标签一样。
不过在修改的时候可得小心哦,别一不小心把其他重要的信息也给改乱了,那就麻烦啦!还有数据的删除操作,当有同学毕业了,他的信息可能就不需要再留在数据库里了,这时候就得把相关的数据删掉,就像把不用的旧玩具清理出去,给新玩具腾出空间一样。
数据库原理笔记数据库概念数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的⼤量数据的集合。
1. 数据库系统的特点数据结构化数据的共享性⾼,冗余度低,易扩充数据独⽴性⾼数据由DBMS统⼀管理和控制1. 两⼤类数据模型概念模型也称信息模型,它是按⽤户的观点来对数据和信息建模,⽤于数据库设计。
逻辑模型和物理模型,逻辑模型主要包括⽹状模型、层次模型、关系模型、⾯向对象模型等,按计算机系统的观点对数据建模,⽤于DBMS实现。
物理模型是对数据最底层的抽象,描述数据在系统内部的表⽰⽅式和存取⽅法,在磁盘或磁带上的存储⽅式和存取⽅法。
1. 关系数据库关系数据库系统采⽤关系模型作为数据的组织⽅式,在⽤户观点下,关系模型中数据的逻辑结构是⼀张⼆维表,它由⾏和列组成。
关系的每⼀个分量必须是⼀个不可分的数据项, 不允许表中还有表。
1. 数据库系统的三级模式结构模式(Schema)外模式(External Schema)内模式(Internal Schema)1. 关系模式关系模式可以形式化地表⽰为:R(U,D,DOM,F)R 关系名U 组成该关系的属性名集合D 属性组U中属性所来⾃的域DOM 属性向域的映象集合F 属性间的数据依赖关系集合1. 实体完整性规则(Entity Integrity)若属性A是基本关系R的主属性,则属性A不能取空值;关系模型中以主码作为唯⼀性标识。
1. 参照完整性规则若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不⼀定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值1. 关系代数运算符关系数据库标准语⾔SQLSQL(Structured Query Language)结构化查询语⾔,是关系数据库的标准语⾔。
集数据定义语⾔(DDL),数据操纵语⾔(DML),数据控制语⾔(DCL)功能于⼀体。
数据库系统原理⎽(1)授权grant的一般格式为:grant<权限> on <对象类型> to <用户>其语义是将指定操作对象的指定操作权限授予指定的用户;不同对象类型允许的操作权限例如:把查询student权限授权给用户U1;Grant select on table student to U1;⎽(2)收回权限revoke格式:revoke <权限> on<对象类型> from <用户>例如:把用户U4修改学生学号的权限收回Revoke update(sno) on table student from u4;⎽超键(super key)、候选键(candidate key)和主键(primary key)的区别?超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键候选键(candidate key):不含有多余属性的超键称为候选键主键(primary key):用户选作元组标识的一个候选键程序主键比如一个小范围的所有人,没有重名的,考虑以下属性身份证姓名性别年龄身份证唯一,所以是一个超键姓名唯一,所以是一个超键(姓名,性别)唯一,所以是一个超键(姓名,性别,年龄)唯一,所以是一个超键--这里可以看出,超键的组合是唯一的,但可能不是最小唯一的身份证唯一,而且没有多余属性,所以是一个候选键姓名唯一,而且没有多余属性,所以是一个候选键--这里可以看出,候选键是没有多余属性的超键考虑输入查询方便性,可以选择身份证为主键也可以考虑习惯选择姓名为主键--主键是选中的一个候选键封锁粒度与系统的并发度成反比。
试述事务的四个性质,并说明每一个性质由DBMS的哪个子系统实现?每一个性质对数据库系统有什么益处?答:原子性:一个事务对数据库的所有操作,是一个不可分割的工作单元,这些操作要么全部执行,要么什么也不做(由DBMS的事务管理子系统来实现);一致性:一个事务独立执行的结果,应(由DBMS的完整性子系统执行测试任务);隔离性(由DBMS的并发控制子系统实现);持久性(由DBMS的恢复管理子系统实现的)。
数据库原理及应用知识点总结数据库是一个结构化存储数据的系统,能够通过各种方法访问和管理这些数据。
它是现代应用程序开发中不可或缺的组成部分,有着广泛的应用。
1.数据库的类型-层次数据库:通过树状结构组织数据,适合处理具有层次结构的数据。
-网状数据库:数据之间的关系可以是任意的,适合处理复杂的数据关系。
-关系数据库:数据以关系的形式组织,主要有表、行和列构成,使用标准的SQL查询语言进行操作。
-非关系数据库:使用键值对的形式存储数据,适合处理非结构化的数据。
2.关系数据库的特点-数据以关系表的形式存储,表由行和列组成。
-表中的数据是结构化的,有特定的数据类型,可以对其进行约束。
-数据的逻辑结构与物理存储结构分离,使得数据的操作更加灵活。
-支持事务处理,保证数据的一致性和完整性。
3.SQL语言- SQL(Structured Query Language)是用于管理和操作关系数据库的语言。
-SQL语言包括数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)等。
-DDL用于定义和管理数据库的结构,包括创建、修改和删除表、索引、视图等。
-DML用于操作数据库中的数据,包括插入、更新、删除和查询数据。
-DCL用于控制数据库中的数据访问权限和事务管理。
4.数据库设计-数据库设计是指根据应用程序的需求,将数据组织成适合存储和检索的结构。
-数据库设计的步骤包括需求分析、概念设计、逻辑设计和物理设计。
-需求分析阶段确定了数据库的用户需求和功能需求。
-概念设计阶段将实体和关系转化为概念模型,采用E-R图进行表示。
-逻辑设计阶段将概念模型转化为关系模型,确定实体、属性、关系和约束。
-物理设计阶段将关系模型映射到存储结构,包括索引、分区、冗余等。
5.数据库索引-索引是一种数据结构,用于提高数据库的查询性能。
-索引可以基于一个或多个列,可以是唯一的或非唯一的。
-索引可以加快数据的检索速度,但同时会增加数据的插入、更新和删除的时间。
数据库原理习题一、核心知识点1、数据库系统和文件系统的比较。
文件系统:数据可长期保存、由文件系统管理数据,但是数据共享性差,冗余度大,数据独立性差;数据库系统:数据库实现整体数据的结构化、数据的共享性高,冗余度低,意扩充、数据独立性高、数据由DBMS统一管理和控制2、简述数据库系统的三级模式结构。
外模式/模式、模式、内模式3、简述数据库系统三级模式结构中的两级映像,并说明其优点。
两级映像:外模式/模式映像模式/内模式优点:这两级映像保证了数据库系统中的数据具有较高的逻辑独立性和物理独立性4、简述数据模型的三要素。
数据结构、数据操作、数据的完整性约束5、简述数据库独立性的特点。
数据独立性是由DBMS二级映像功能来保证的,数据与程序的独立性大大减少了应用程序的维护和修改6、简述数据库系统的组成部分数据库、硬件、软件、人员7、简述DBA的主要职责。
数据库管理员(DBA)负责全面管理和控制数据库系统,其主要职责有;设计与定义数据库系统;帮助最终用户使用数据库系统;监督与控制数据库系统的使用和运行;转储与恢复数据库;改进和重组数据库系统,调优数据库系统的性能;重构数据库8、简述关系模型的特点。
关系中每一个字段也称字段,不可再分,是最基本的单位;每一列数据项是同属性的。
列数根据需要而设,且各列的顺序是任意的;每一行记录由一个事物的诸多属性组成,记录的顺序可以是任意的;一个关系是一张二维表,不允许有相同的字段名,也不允许有相同的记录行9、简述关系模型的组成部分。
关系数据结构、关系操作集合、关系完整性约束10、简述关系的性质。
1对11对0..*1对1..*关系中不允许出现相同的元组关系中元组的顺序(即行序)可任意关系中属性的顺序可任意同一属性名下的各个属性值必须来自同一个域,必须是同一类型的数据关系中各个属性必须有不同的名字,不同的属性可来自同一个域,即它们的分量可以取自同一个域。
关系中每一个分量必须是不可分的数据项,或者说所有的属性值都是原子的,即是一个确定的值,而不是值的集合。
数据库数据库原理数据库简介(理解)1.数据库的重要性:数据库无处不在:它们是电子商务和其他WEB应用程序的主要组成部分,是企业操作和决策支持应用程序的核心部分。
2.数据库的目的:数据库的主要目的是帮助用户更好地管理数据。
3.关于列表的问题:过于简单的列表可能会导致数据的不一致性和其他问题,如删除行会丢失过多的数据,改变行会导致不一致的数据,插入行会导致数据遗漏。
通常情况下,如果一个列表含有的数据指示两个或两个以上的不同事情时,修改数据就会出现问题。
4.可以用关系模型的方法解决列表所产生的问题。
一个关系数据库含有一个独立表的集合。
在很多情况下,每个表中的数据有且仅有一个主题。
如果一个表含有两个或多个主题,我们就需要将其分割为两个或多个表。
数据库系统的概念1.数据库系统的4个基本元素是:用户、数据库应用程序、数据库管理系统(DBMS)和数据库。
2.数据库:在绝大多数情况下,数据库就是关联记录项的自描述集合。
对于所有的关系数据库,该定义可以修改为:数据库就是关联表的自描述集合。
自描述意味着数据库本身含有对数据库结构的描述。
关于数据库结构的数据称为元数据。
元数据的示例是表名、列名和列所属的表、表和列的属性等。
应用元数据用于描述应用程序元素,如表单和报表。
3.DBMS的目标是创建、处理和管理数据库。
DBMS的功能包括:(1)创建数据库(2)创建表(3)创建支持结构(如索引等)(4)读取数据库数据(5)修改(插入、更新或删除)数据库数据(6)维护数据库结构(7)执行规则(8)并发控制(9)提供安全性(10)执行备份和恢复4.应用程序的功能包括:(1)创建并处理表单(2)处理用户调查(3)创建并处理报表(4)执行应用逻辑(5)控制应用关系模型一、关系●关系是具有如下特征的二维表:●表的每一行存储了某个实体某个属性的数据。
●表的每类包含了用于表示实体某个属性的数据。
●关系中的每个单元格的值必须单值。
●任意一列中所有条目的类型必须为单值。
●行与行之间顺序任意。
●表中任意两行不能具有完全相同的数据值。
(每个单元格都只有唯一的值,每列中所有实体的类型都是一样的。
列名都是唯一的,即使我们交换任意两行或两列的顺序,也不会丢失任何信息。
表中,任意两行都不重复。
所以,为关系)键的类型1.键(Key):是关系中用来标识行的一列或多列。
可以是唯一的,也可以是不唯一的。
2.复合键:包含两个或更多属性的键。
3.候选键:是唯一标识关系中每一行的键。
可以是一列,也可以是复合键。
从候选键里选主键。
4.代理键:是具有DBMS分配的唯一标识符的列,该标识符已经作为主键添加到表中。
是短暂的数字,并且永远不变,他们是理想的主键。
5.外键与参照完整性:Foreign key:将关系CUSTOMER 中的主键CustomerNumber放入关系ENROLLMENT 中。
在这种情况下,关系ENROLLMENT中的属性CustomerNumber就被称为外键。
Reference intergrity: 关系ENROLLMENT的CustomerNumber的值必须在CUSTOMER 的CustomerNumber中存在对应项。
这样的规则被称为参照完整性。
理解函数依赖如:A→B 可以读作 A 决定B,B依赖于A,A为决定因子。
(A,B)→C 说明复合的(A,B)是C的决定因子。
不可以说A→C或B→C。
A→(B,C)也可以说A→B和A→C.规范化(考试重点:要把示例看懂,考试的要求和书本上是一致的。
)规范化定义:将一个具有多个主题的表或关系分割为一组表,使得每一个表只有一个主题。
规范化过程:(1)确认关系的所有候选键。
(2)确认关系中所有函数依赖关系。
(3)检查函数依赖关系的决定因子。
(4)根据需要,多次重复步骤。
(5)直至每个关系的决定因子都是候选键。
步骤1:根据规范化的过程,首先确定所有的候选键。
考虑一切可能性,从左至右,一个一个分析。
先分析单独一列,再分析组合键。
经过分析,得出PRESCRIPTION的唯一候选键为PrescriptionNumber.步骤2:根据规范化的过程,可以确定所有的函数依赖关系。
Drug→DosageCustomer Email→(Customer Name, Customer Phone)步骤3:决定存在的决定因子是否为候选键。
Customer Email是一个决定因子,不是候选键。
CUSTOMER (CustomerEmail, CustomerPhone, CustomerName)PRESCRIPTION (PrescriptionNumber, Date, Drug, Dosage, CustomerName) PRESCRIPTION中的CustomerEmail必须在CUSTOMER的值中找到对应项。
补充:1.第一范式(1NF)无重复的列在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
2.第二范式(2NF)属性完全依赖于主键,要求数据库表中的每个实例或行必须可以被唯一地区分。
3.第三范式(3NF)属性不依赖于其它非主属性。
简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
所有的高级范式要满足低级范式。
怎么创建报表,要了解过程。
结构化查询语言1. SQL并不是完整的编程语言,而更像是一种数据子语言。
SQL是面向文本的。
2. SQL命令可以划分为两个主要的类别:用于定义数据库结构的数据定义语言(DDL)以及用于查询和修改数据库的数据操作语言(DML)。
3. 外键不需要与它所引用的主键同名。
(p106)4. 业务规则(p109)(1)如果要删除表中的某一行,而该行又连接到另外一个表,则禁止对该表这一行进行删除操作。
(1)如果删除了表中的某一行,则另一个表中连接到这个已经删除的表的行的所有行也将随之被删除。
5. SQL DDL 用于创建和改变数据库结构,并且用于插入、修改和删除表中的数据。
SQL CREAT TABLE 语句用来创建表的结构,这个语句的基本结构参照(p110)列定义的3个部分为列名、列数据类型和对列值的约束.6.本书中讨论的列约束有PRIMARY KEY、NOT NULL、NULL、UNIOUE。
除了这些列约束之外,还有CHECK列约束。
而DEFAULT(不是列约束)可用于设置初始值。
(p111)7. 最基本的数据类型(具体参照p114)整数(Int)字符(Char)时间(Date Time)数字(Numeric)注意:Phone (Char) 因为电话号码有分隔符其他的数据类型参见书上8. 使用表约束定义主键(p115)利用表约束创建主键有3个优点:(1)这是定义复合键的要求,因为PRIMARY KEY(主键)列的约束不可以用于多个列。
(2)其次开发人员可以使用表约束来命名定义主键的约束。
(3)可以很方便的在一些DBMS产品中定义代理键。
(p116)9.使用表约束定义外键(p117)在代理键永不变的情况下,ON UPDATE 短语被设置为 NO ACTION(P118)(1)ON DELETE CASCADE 表示删除表中的某一行时,必须级联删除(2)ON DELETE NO ACTION是默认设置,表示A表连接到B表,则不允许删除A表的行。
10.不同于SQL Server2005和MySQL,MS Access不支持SQL脚本。
可以使用Create Table 命令创建表,并且使用Insert命令插入数据,但一次只能执行一条SQL命令。
11.SQL语句(1)SQL DML用于查询数据库以及修改表中的数据。
(2)3种可能的数据修改操作:插入---更新----删除(3)可以使用SQL INSERT 命令为关系添加数据。
(p121)(4)SQL查询语句Select/from/where(p124)删除重复行DISTINCT。
读取指定行用WHERE界定条件,指定列则不用WEHER界定。
(p127)使用AND关键字在WHERE字句中放置更多的条件,意思是选择满足所有的条件。
OR则是选择满足任一个条件的行。
(p129)(5)关键字IN,指定列必须是值集中的某个值。
(p130)查询表中值不是所列值的行,可以使用NOT IN 。
IN列值等于所列项的某一个值。
NOT IN 列值不等于所列值的任意一个值。
这有点类似于AND和OR。
(6)BETWEEN AND 指定值的范围LIKE 查询部分匹配的值SQL 通配字符是下划线_(一个未指定的字符)和%(一些列或者多个未指定的字符)具体例子参照(p132)(7)IS NULL 查找含有NULL值的行(p133)(8)结果排序 ORDER BY ASC (升序) DESC(降序)(9)SQL的包括内置函数:COUNT、SUM、AVG、MAX、MIN。
这些事针对SELECT 语句结果进行操作的。
1)COUNT 用于任何数据类型,其他四个只能对整数、数值、其他数字类型执行操作。
2)COUNT函数统计了结果集中行的数目,SUM一个数值列行的总和(p136)注意列的名称是不允许和内置函数一起混合使用的(p137)(10)GROUP BY 语句分组HAVING字句应用某些条件,进一步限制所得结果(p138)GROUP BY 和WHERE 同时使用的时候,首先运用WHERE(11)用子查询处理多个表,一级查询内容来至一个表。
具体例子p13912)使用连接查询多个表,查询内容包括多个表的内容。
p141子查询只有在结果来自一个表的情况下才有用,要显示两个或者多个表中的数据就不能用只查询,要用到连接操作。
连接的基本思想是:在连接原来两个或者多个关系的内容基础上再建立一个新关系。
1)这里介绍了JOIN IN 语法,连接一个表和连接两个表(p145)2)外连接,这样可以避免数据的丢失(p149)(13)修改删除表的数据(p150)用SOL UPDATE SET 修改表中已有的数据的值(14)删除数据DELETE 语句DROP TABLE 删除表的结构和所有表的数据(p153)ALTER TABLE 用于添加、修改和删除列和约束。
数据建模与实体—关系模型数据库系统开发的三个主要步骤:需求,设计,实现。
1.需求分析阶段:设计者和系统用户进行交流,获得抽样表单、报表、查询和有关数据跟新活动的说明。
2.设计阶段:数据库模型被转换成特定的数据库设计。
包括数据库中各种表的设计、关联和约束的设计。
3.实现阶段:构建数据库,并向其中填充数据;同时建立各种查询、表单和报表;此外还将编写程序。
需求分析阶段1.数据库应用程序的需求分析来源:与用户交流、表单、报表、查询、用例、业务规则。