js css htmljava学习之路

JavaGuide知识点整理——数据库基础知识总结

2022-09-06  本文已影响0人  唯有努力不欺人丶

什么是数据库,数据库管理系统,数据库系统,数据库管理员?

什么是元组,码,候选码,主码,外码,主属性,非主属性?

主键和外键有什么区别?

为什么不推荐使用外键与级联?

阿里巴巴开发手册这样说:[强制]不得使用外键与级联,一切外键概念必须在应用层解决。
其实不推荐使用外键的原因主要有几点:

  1. 增加了复杂性
  2. 增加了额外工作
  3. 对分库分表不友好(分库分表下外键无法生效)

其实总结起来就是对数据库的压力会加大。尤其是分库分表的情况下是无法使用的,而且级联更新是强阻塞,存在数据库更新风暴的风险,外键影响数据库的插入速度。相对而言我们把压力放在代码层会更好。

什么是ER图?

ER图也成为实体-联系图。提供了表示实体类型,属性和联系的方法。用来描述现实世界的概念模型。
在ER图中有如下四个成分:

下面是一个学生选课的ER图:


image.png

对应的数据库实际的关系模型如下:


image.png
这个其实我认为很容易学,而且作用是为了让自己逻辑清晰。感兴趣的可以自己去查下画法。

数据库范式

1NF(第一范式):
属性不能再被分割,也就是说这个字段只能是一个值,不能再被分为多个其他的字段了。INF是所有关系型数据库的最基本要求,也就是说关系型数据库中创建的表一定要满足第一范式。
2NF(第二范式):
所有非主键字段,必须我完全依赖主键,不能只依赖主键的一部分。

从第一范式到第二范式的实现
3NF(第三范式):
在第2nf的基础上,每列都和主键直接相关而不是间接相关。
简单来说就是比如有一个订单表,其中肯定需要一些买家信息也需要一写卖家信息。对于卖家信息和卖家信息来说依赖的不是订单本身,而是依赖订单中卖家和买家。所以就不应该把买家资料和卖家资料放到订单表中。

什么是存储过程?

这个阿里巴巴开发手册上也明文规定了:【强制】禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。
但是我们还是要简单了解下:我们可以把存储过程看成是一些sql语句的集合。中间加了点逻辑控制语句。存储过程在业务比较复杂的时候是非常实用的。比如很多时候我们完成一个操作可能需要写一大串sql,这时候我们就可以写一个存储过程,这样也方便了我们下一次的调用。存储过程一旦调试完通过后就能稳定运行。另外,使用存储过程比单纯sql至于执行要快,因为存储过程是预编译过的。

drop,delete与trancate区别?

数据库设计通常分为哪几步?

  1. 需求分析:分析用户的需求,包括数据,功能和性能需求。
  2. 概念结构设计:主要采用E-R模型进行设计,包括ER图
  3. 逻辑结构设计:通过将E-R图转换成表,实现从E-R模型到关系模型的转换。
  4. 物理结构设计:主要是为所设计的数据库选择合适的存储结构和存取路径。
  5. 数据库实施:包括编程,测试和试运行。
  6. 数据库的运行和维护:系统的运行和数据库的日常维护。
上一篇 下一篇

猜你喜欢

热点阅读