数据库基础知识:理论、E-R图、事务、原则

(5)数据库理论与E-R图

数据库理论(Database Theory)是在创建数据库的过程涉及创建现实世界的抽象模型;将现实世界的概念作为实体表示在数据库中。E-R图(Entity Relationship Diagramming)用于表示数据模型的图形工具/关系的抽象,主要用于数据库设计阶段,通过实体(Entity)、属性(Attribute)和关系(Relationship)来描述数据之间的结构和联系,例如大学生实体、大学课程实体之间存在选修关系,学生实体具有姓名、学号等属性,课程实体有编号、课程名、学分等属性,这个选修关系就表示学生和课程之间的联系,当然学生和课程联系上之后,考完试还会有成绩等属性。

(6)事务

数据库事务(Database Transaction)是指的是一组不可分割的数据库操作序列。事务具有ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),这些属性确保了数据库操作的可靠性和数据的完整性。例如一个银行数据库,需要实现从账户A向账户B转账的功能,这个操作需要确保两个账户的余额更新是原子的,即要么全部成功,要么全部失败,可以将SQL语句集合为事务,将账户A转出和账户B转入作为事务提交。

  • 原子性(Atomicity):在这个例子中,转账操作包括两个更新操作,要么全部成功(账户A扣除100元,账户B增加100元),要么全部失败(如果其中一个操作失败,事务会被回滚,账户余额保持不变)。

  • 一致性(Consistency):事务确保在转账前后,账户A和账户B的总余额保持不变。例如,转账前总余额为1500元,转账后仍为1500元,保证数据库的完整性约束不被破坏。

  • 隔离性(Isolation):如果多个事务同时进行转账操作,隔离性确保每个事务的执行结果不会受到其他事务的干扰。例如,两个事务同时从账户A向账户B和账户C转账,隔离性保证每个事务都能正确地更新账户余额。

  • 持久性(Durability):一旦事务提交,账户余额的更改将被永久保存,即使系统发生故障也不会丢失。数据库系统通过日志记录等机制来保证持久性。

(7)数据库原则

数据一致性和完整性原则

  • 数据一致性:确保数据库中的数据在逻辑上是一致的,没有矛盾。例如,如果一个学生的成绩在不同的表中记录,这些记录应该是一致的。
  • 数据完整性 :保证数据的准确性和可靠性,通常通过约束条件来实现,如:
    • 实体完整性:确保每个表中的每个记录都是唯一的,通常通过主键约束来实现。
    • 参照完整性:确保表之间的关系是正确的,通常通过外键约束来实现,防止引用不存在的记录。
    • 用户定义完整性:根据业务需求定义的特定约束,如成绩字段的值应在0到100之间。

数据独立性原则

  • 数据独立性:指数据的存储与应用程序的逻辑分离,使得数据的修改不会影响应用程序的运行。数据独立性分为:
    • 物理数据独立性:数据的物理存储结构(如存储位置、存储方式)的改变不会影响应用程序的运行。
    • 逻辑数据独立性:数据的逻辑结构(如表结构、字段名)的改变不会影响应用程序的运行。

数据安全性原则

  • 数据安全性:保护数据库中的数据不被非法访问、篡改或丢失。通常通过以下措施实现:
    • 用户认证:确保只有授权用户才能访问数据库。
    • 访问控制:对不同用户设置不同的访问权限,限制用户对数据的访问范围和操作类型。
    • 数据加密:对敏感数据进行加密存储和传输,防止数据泄露。

数据可维护性原则

  • 可维护性:数据库设计应便于维护和更新。良好的数据库设计应:
    • 结构清晰:表结构和关系设计合理,易于理解和修改。
    • 易于扩展:随着业务的发展,能够方便地添加新的数据表或字段。
    • 减少冗余:避免数据冗余,减少数据更新时的复杂性和错误。

性能优化原则

  • 性能优化:设计数据库时应考虑查询和更新的效率,以提高系统的响应速度和处理能力。常见的优化措施包括:
    • 合理使用索引:为经常查询的字段建立索引,加快查询速度。
    • 优化查询语句:编写高效的SQL查询语句,减少不必要的数据扫描和计算。
    • 合理设计表结构:根据数据的使用情况合理设计表结构,如适当的数据分区和归一化处理。

可扩展性原则

  • 可扩展性:数据库设计应具有良好的可扩展性,能够适应业务需求的变化和数据量的增长。例如:
    • 支持水平扩展:能够通过增加服务器数量来提高系统的处理能力。
    • 支持垂直扩展:能够通过升级服务器的硬件配置来提高系统的性能。
相关推荐
m0_748252383 分钟前
三分钟内快速完成MySQL到达梦数据库的迁移
数据库·mysql
m0_748255654 分钟前
MySQL篇之对MySQL进行参数优化,提高MySQL性能
数据库·mysql
是店小二呀6 分钟前
【2024年CSDN平台总结:新生与成长之路】
数据库·人工智能·程序人生·aigc·音视频
mikey棒棒棒32 分钟前
基于Redis实现短信验证码登录
java·开发语言·数据库·redis·session
文人sec37 分钟前
解锁速度之门:Redis
数据库·redis·python·缓存
s_fox_37 分钟前
Redis 集群模式入门
数据库·redis
m0_748247551 小时前
【HTML+CSS】使用HTML与后端技术连接数据库
css·数据库·html
god001 小时前
编译chromium笔记
大数据·数据库·elasticsearch
村口蹲点的阿三2 小时前
spark sql中对array数组类型操作函数列表
大数据·数据库·hive·sql·spark·database
V+zmm101342 小时前
基于微信小程序高校订餐系统的设计与开发ssm+论文源码调试讲解
java·数据库·微信小程序·小程序·毕业设计