数据库基础知识:理论、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查询语句,减少不必要的数据扫描和计算。
    • 合理设计表结构:根据数据的使用情况合理设计表结构,如适当的数据分区和归一化处理。

可扩展性原则

  • 可扩展性:数据库设计应具有良好的可扩展性,能够适应业务需求的变化和数据量的增长。例如:
    • 支持水平扩展:能够通过增加服务器数量来提高系统的处理能力。
    • 支持垂直扩展:能够通过升级服务器的硬件配置来提高系统的性能。
相关推荐
翔云1234561 分钟前
Gaea(小米MySQL Proxy)整体架构
运维·数据库·mysql
jaysee-sjc7 分钟前
【苍穹外卖】Day10:定时任务与 WebSocket 实时提醒实战
java·开发语言·javascript·数据库·vue.js·websocket·网络协议
牧瀬クリスだ18 分钟前
Redis五大数据类型全解析:从入门到实战
java·数据库·redis·后端·缓存
瑞克-桑切斯19 分钟前
PostgreSQL 14.4 源码部署 & 运维手册(CentOS7)
数据库·学习·postgresql
上海红同电子25 分钟前
红同电子线束工厂100问|绝缘护套采购,材质PVC、TPE、PP该如何选型?
数据库·经验分享·职场和发展·产品运营·制造·材质
泡海椒1 小时前
JQuick-SQL “数据源 SPI”辨析:应用适配器与 Function SPI 的正确边界
数据库·驱动开发·sql
无毁的湖光-Al1 小时前
高可用之路-观测篇-那些年遇到过的指标幻觉
linux·数据库·tcp
段一凡-华北理工大学1 小时前
高炉能源系统智能化:热风炉、煤气与极致能效~系列文章02:走进热风炉:蓄热、换炉、送风的工艺机理
大数据·数据库·能源·高炉能源管控·热风炉·热风炉工作原理
西索斯coding1 小时前
qwen3.8-max 和 minimax-m3 改后端仓库实测复核:补丁通过率与调用成本别急着排冠军
linux·运维·ubuntu·ai
紧跟先前的步伐1 小时前
Go AI Agent 实战 18|Tool Calling 的基本原理与完整执行流程
前端·数据库·人工智能·ai·golang·1024程序员节