博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库-------->如何设计数据库:建立关系模型
阅读量:5747 次
发布时间:2019-06-18

本文共 1917 字,大约阅读时间需要 6 分钟。

概述:本文讲述设计数据库的方法

第一部分 基础知识点

概述:

  想要设计出性能较好的数据库,首先要熟记以下知识点。

基础知识点:

    • 数据表中不能有完全相同的两行记录(至少应有不同的关键值) 
    • 一个单元格中只能有一个值,不能同时有多个值(例:某个单元格中有多个电话号码,这是不行的)
    • 要了解描述数据库的若干术语:不同的人员对数据库的同一个内容可能有不同的叫法,下面列举了几种等价的描述方法。

    • 键:
      • 一张表格中若干属性----组合成--->键(单列键、复合键)----子集合--->候选键------->主键
        •                                唯一或不能唯一标识每一行        能唯一标识每一行的所有键的集合  
        • 一张表格中有若干属性,一个或多个属性组合在一起就是一个键(单列键、复合键),这些键(单列键、复合键)并不都能唯一的标识表中的每一行,那些能够唯一地标识每一行的键(单列键、复合键)被称作候选键,候选键是一个集合,因为一个表格中可能有多个键都能唯一地标识表格中的每一行。从候选键集合中找出一个来作为该表格的主键,用于唯一地标识该表格的任意一行。
        • 表格的主键可以唯一地标识该表格中的每一行。
        • 主键可以是单列键也可以是复合键。
      • 主键--------->代理键作为主键
        •  代理键是由DBMS自动产生与管理的
        •  有时候表格中已经存在的候选键都是比较复杂的复合键,或者表格中根本就不存在候选键,这时就需要使用DBMS的代理键作为主键来唯一标识表格每一行
        •  不同的DBMS中指定主键的方式不同,指定DBMS的代理键作为主键的方法也不同,如Access中是通过将列属性的数据类型设置为AutoNumber类型这一途径来指定主键是DBMS的代理键,而SQL Server中则是通过在控制面板中设置指定列属性的参数——设置为is Identity(该主键是一个代理键),指定identity seed(初始值),identity increment(每次增长的值)。而MySQL中则是使用AUTO_INCREMENT函数来说明主键是DBMS管理的代理键。
        • 代理键对于用户没有实际的意义,只是用于唯一标识表格的每一行,所以在生成面向用户的报表时,通常将代理键屏蔽掉。
      • 外键与参照完整性
        • 外键是其他表格的主键
        • 外键名称和其他表格的主键名称不一定相同,但是这两列必须有相同的值集(也即单元格的值取自相同的集合)。前面所讲外键和其他表格的主键列必须有相同的值集,其实就是一个“‘参照完整性’”约束条件
        • 每一个外键都必须有相应的“参照完整性约束条件”
        • 通过外键和其他表格联系起来,查找其他表格的信息  
    • 表的描述:
      • 概述,设计数据库的前期都是先将关系模型描述好,关系模型中有特定的表格描述方法,如下
      • 表格名(主键,属性名,属性名,..,外键,...)
        • 表格名所有字符大写,多个单词用下划线连起来,如TABLE_STUDENT_INFORMATION
        • 列名称各个单词首字母大写,如StudentNumber
        • 使用下划线标出表格的主键,主键可以是复合键,如
        • 使用斜体表示该列是外键

 

第二部分 设计数据库

概述:

    • 如何将现实生活中的数据以及数据关系映射到DBMS可以管理的数据形式?
    • 存储上述数据时应该如何组织它们,应该考虑哪些因素?  

2.1设计数据库的基本原则:

       原则一,确定表格主题,应该将含有多个主题的表格分成若干只有一个主题的表格集。

        • 如何确定表格是否含有多个主题:看表格是否仍存在修改问题,如果仍存在修改问题,就需要继续划分成子表格。
          • 修改问题:1)是否一个表格中有很多数据是重复的,譬如下面的表格该表格中存在修改问题,每位教师的数据在该表格中会重复许多次,因为有多个学生都对应于同一个老师。譬如当某个老师的电话更改了,那么就要更改这个表格中的许多行。
          • 修改问题:2)有时候删除一个实体的时候,可能会连带删除另一个实体的相关信息。如上述例子中,如果某个老师只有唯一的一个学生,现在想要删除该学生的信息,就需要将该行信息全部删除,那么删除之后,对应的老师的信息也会消失不见,表格中就再也找不到这位老师的信息了。

    

 

2.2设计数据库(表格规范化)的步骤  

      

 2.3数据库设计实例:根据上述原则和设计步骤设计数据库

实例一:

      

      

      

      

      

      

 

 实例二

      

      

      

      

 

 

 

 

 

 

 

 

备注:参见“数据库原理(第五版)美David M.Kreonke 著 赵艳铎 译 P31-**”

 

  

 

转载于:https://www.cnblogs.com/lxrm/p/6433727.html

你可能感兴趣的文章
OpenMediaVault 搭建git,ssh无法连接问题
查看>>
java多线程之:Java中的ReentrantLock和synchronized两种锁定机制的对比 (转载)
查看>>
【Web动画】SVG 实现复杂线条动画
查看>>
使用Wireshark捕捉USB通信数据
查看>>
《树莓派渗透测试实战》——1.1 购买树莓派
查看>>
Apache Storm 官方文档 —— FAQ
查看>>
iOS 高性能异构滚动视图构建方案 —— LazyScrollView
查看>>
Java 重载、重写、构造函数详解
查看>>
【Best Practice】基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏
查看>>
【云栖大会】探索商业升级之路
查看>>
HybridDB实例新购指南
查看>>
C语言及程序设计提高例程-35 使用指针操作二维数组
查看>>
华大基因BGI Online的云计算实践
查看>>
深入理解自定义Annotation,实现ButterKnif小原理
查看>>
排序高级之交换排序_冒泡排序
查看>>
Cocos2d-x3.2 Ease加速度
查看>>
[EntLib]关于SR.Strings的使用办法[加了下载地址]
查看>>
中小型网站架构分析及优化
查看>>
写shell的事情
查看>>
负载均衡之Haproxy配置详解(及httpd配置)
查看>>