数据库设计
考点:
数据模型、主键和超键、E-R模型转换为关系模型、SQL语句……
数据库模式:概念模式、外模式、内模式
数据模型:E-R图、第一范式、第二范式、第三范式
数据操作:集合运算、关系运算
数据库语言:SQL语言
数据库控制功能:并发控制、恢复、安全性、完整性
数据仓库、分布式数据库
数据库的逻辑设计、物理设计
多媒体数据库
联系类型:
(1)1:1 一对一
(2)1:n 一对多
(3)n:1 多对一
(4)m:n 多对多
联系的判断:
属性||文字
关系模式主要问题:
(1)数据冗余问题
(2)数据修改不一致问题
关系模型的逻辑结构:
是一组关系模式的集合
E-R图、实体联系图:功能、实体
实体+实体的属性+实体之间的联系,三个要素组成。
将实体、实体的属性、实体之间的联系,转换为关系模式。
(1)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。
(2)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
(3)一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体码的组合组成该关系的码,或码的一部分。
(4)三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
(5)具有相同码的关系模式可合并。
http://www.cnblogs.com/yinxiangpei/articles/2626765.html
实体与属性
遵循的原则:
(1)“属性”必须是不可再分的数据项,不能具有需要描述的性质
(2)“属性”不能与其他实体有联系
冲突
1.属性冲突
(1) 属性域冲突,即属性值的类型、取值范围或取值集合不同。 例如:属性“零件号”有的定义为字符型,有的为数值型。
(2) 属性取值单位冲突。 例如:属性“重量”有的以克为单位,有的以公斤为单位。
2.命名冲突
(1) 同名异义。 不同意义对象相同名称。
(2) 异名同义(一义多名)。同意义对象不相同名称。“项目”和“课题”
3.结构冲突
(1) 同一对象在不同应用中具有不同的抽象。例如 "课程 "在某一局部应用中被当作实体,而在另一局部应用中则被当作属性。
(2) 同一实体在不同局部视图中所包含的属性不完全相同,或者属性的排列次序不完全相同。
(3) 实体之间的联系在不同局部视图中呈现不同的类型。
例如实体E1与E2在局部应用A中是多对多联系,而在局部应用B中是一对多联系;又如在局部应用X中E1与E2发生联系,而在局部应用Y中E1、E2、E3三者之间有联系。
解决方法是根据应用的语义对实体联系的类型进行综合或调整。
数据库规范化:如果数据库没有进行相应的规范设计,虽然在查询数据库可能会比较容易,但有时会造成一些问题,主要的问题如下:
1.信息重复(会造成储存空间的浪费及一些其他问题).
2.更新异常(冗余信息不仅浪费空间,还会增加更新的难度).
3.插入异常
4.删除异常(在某些情况下,当删除一行时,可能会丢失有用的信息).
三大范式
1.第一范式:
目标是确保每列的原子性.如果每列都是不可再分的最小数据单元,则满足第一范式.
2.第二范式:
第二范式在第一范式的基础上更进一层,其目标是确保表中的每列都和主键相关,也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中.如果一个关系满足第一范式,并且除了主键以外的其他列都依赖与该主键.则满足第二范式.
3.第三范式:
第三范式在第二范式的基础上更进一层,第三范式的目标是确保每列都和主键列直接相关,而不是间接相关.如果一个关系满足第二范式,并且除了主键以外的其他列都这能依赖于主键列,列和列之间不存在相互依赖关系,则满足第三范式.
规范性和性能的关系:为了满足三大范式,我们的数据操作性能会受到相应的影响,所以,在实际的数据库设计中,既要考虑三大范式,避免数据的冗余和各种数据操作异常;有要考虑到数据访问性能,有时,为了减少表间连接,提高数据库的访问性能,允许适当的数据冗余列,这可能是最合适的数据库设计方案.
主键:
如果存在某个属性、属性组合能够唯一标识该关系的元组,则这个属性、属性组合成为该关系的候选关键字。
可在一个关系的若干个候选关键字中随意指定一个作为关键字。
这个关键字成为该关系的主键、主码。
外键:
关系模式R中中属性或属性组X并非R的键,但是X是另一个关系模式的键,则成X是R的外键。
属性组:
注意是否多写,&&
关系模式:
模式分解:无损连接
SQL语句:
列名 类型 primary key;
foreign key(列名)references 表名
count(*) ;sum(列名) ;avg(列名)
group by 列名 having 条件
existes与in的区别:http://www.cnblogs.com/mytechblog/articles/2105785.html
表关联查询时,表之间的联系必须在where语句中。 例如: A.no=B.no
嵌套语句select中,属性不能缺少
group 语句中,select中的属性不能少
两个not existes:可以表示&&,或者非非得正
数据插入:
1.题干条件
2.主键:唯一标识符,不能重复
2.外键:对应关系主码,可为null(允许为空)&&题干条件
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?