数据库的设计

数据库三范式

  范式是设计数据库的通用规范,并不要求强制遵守,但常用的有以下三条:

  第一范式(1NF):强调的是列的原子性,即列不能够再分为其他几列

  第二范式(2NF):满足1NF,并且满足

  1.   一个表必须有一个主键;
  2.   非主键字段必须完全依赖于主键字段,而不能只依赖主键的一部分。

  第三范式(3NF):满足2NF,满足非主键字段必须直接依赖于主键,即不能存在传递依赖。

  一句话概括数据库设计的3范式,即一个表的所有列必须是原子不可分的,非主键字段必须完全直接依赖于主键字段。

E-R模型及表间关系

  ER模型简介:

  ER模型,即E-R图(Enity Relationship Diagram),是指提供了表示实体、属性和联系的方法,用来描述现实世界的概念模型。

  ER模型的使用场景:

  • 关系型数据库 关系模型的基础上,我们需要根据产品经理的设计策划,抽取出来模型与关系,制
  • 定出表结构,这是项⽬开始的第⼀步
  • 在设计阶段⼀般使⽤E-R模型进⾏建模。有很多设计数据库的软件,常⽤的如power designer,db
  • desinger等,这些软件可以直观的看到实体及实体间的关系
  • 设计数据库,可能是由专⻔的数据库设计⼈员完成,也可能是由开发组成员完成,⼀般是项⽬经
  • 理带领组员来完成
  • 待设计完成E-R模型会将其转化为关系模型

  E-R图⽤ 实体、联系和属性这3个概念来描述现实问题。 有以下三种元素:

    1 实体型(Entity):具有相同属性的实体具有相同的特征和性质,⽤实体名及其属性名集合来抽象
    和刻画同类实体;在E-R图中⽤矩形表示,矩形框内写明实体名;⽐如 电商购物系统中⽤户、购物
    ⻋、订单等都是实体。
    2 属性(Attribute):实体所具有的某⼀特性,⼀个实体可由若⼲个属性来刻画。在E-R图中⽤椭圆
    形表示,并⽤⽆向边将其与相应的实体连接起来;⽐如⽤户的ID、⽤户名、密码、昵称、身份证
    号码 都是属性。
    3 联系(Relationship): 实体彼此之间相互连接的⽅式称为联系,也称为关系。联系可分为以下 3
    种类型:

      ⼀对⼀、⼀对多、多对多
       关系也是⼀种数据,需要通过⼀个字段存储在表中
    • 实体A对实体B为1对1,则在表A或表B中创建⼀个字段,存储另⼀个表的主键值
    • 实体A对实体B为1对多:在表B中创建⼀个字段,存储表A的主键值
    • 实体A对实体B为多对多:新建⼀张表C,这个表只有两个字段,⼀个⽤于存储A的主键值,⼀个⽤
      于存储B的主键值
 

  数据库的完整性约束用于保证数据的正确性。系统在更新、插入或删除等操作时检查数据的完整性,核实其约束条件,即关系模型的完整性规则。关系模型中有四类完整性约束:实体完整性、域 完整性、参照完整性和⽤户定义完整性,其中实体完整性和参照完整性约束条件,成为关系的两个不变性。

完整性约束

  实体完整性

    实体完整性指表中⾏的完整性。主要⽤于保证操作的数据(记录)⾮空、唯⼀且不重复。即实体完整性要求每个关系表有且仅有⼀个主键,每个主键值必须唯⼀,⽽且不允许为“空”或重复。
    • 主键索引,不重复不可以为空
    • 唯⼀索引,不重复可以为空

  域完整性

    域完整性是指数据库表中的 列必须满⾜某种特定的数据类型或约束。其中约束⼜包括取值范围、精度等。表中的default、not null、数据类型定义都属于域完整性的范畴。

  参照完整性

      参照完整性属于表间规则。对于永久关系的相关表,在更新、插⼊或者删除记录时,如果只改其⼀,就会影响数据的完整性。如删除⽗表的某记录后,⼦表的相应记录未删除,致使这些记录称为孤⽴记录。对于更新、插⼊、删除表间数据的完整性,统称为参    照完整性。foreign key.

  ⽤户定义完整性

    ⽤户定义完整性是对数据表中字段属性的约束,⽤户定义完整性规则也称域完整性规则。包括字段的值域、字段类型和字段的有效规则等约束,是由确定关系结构时所定义的字段属性决定的。
 
 
-------------------------------------------------- 花有重开日,人无再少年... -----------------------------------------------------
posted @   Avery_rainys  阅读(79)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示