zoukankan      html  css  js  c++  java
  • 数据冗余与外键

    1.数据冗余的问题:
    1>造成了存储空间的浪费。

    2>更新异常、删除异常。

    所以一般情况不允许在表中出现数据冗余。

    2如何避免数据冗余?
           把原来表中的数据拆分成多个表来存储。
           当把表中的信息拆分成多个表来存储的时候会有一个问题:如何将这两张表中的数据关联起来?

           答:使用主键和外键来进行关联。使用主外键就能将不同表中的数据关联起来。

    3什么是外键,如何通过主外键将表中的数据关联起来?

            当把数据拆分成两张表来存储的时候,每个表中都有自己的主键。

           其中一张表中,除了主键外,又多了一列,这列用来引用另外一张表中的主键,那么这列就是第一张表中“外键列”,有外键列的表就叫做“外键表”,相对来说,主键被引用的那张表就叫做“主键表”。 或者:假设两张表中都有主键,A表,B表。A表中的主键为AId。B表中的主键为Bid. 这时,A表中引用了B表中的Bid作为一列,这时,我们就叫A表位B表的外键表,而B表叫做主键表。 因为外键列中引用的是另外一张表中的主键列的数据,所以外键列中的数据是不能随便写的,必须是在另外一张表中的主键列中已经存在的数据。

    例如:商品表的主键是:商品Id, 厂家表的主键是:厂家Id 但是,在商品表中需要引用厂家表,所以在商品表中增加一列,这一列是用来引用厂家表中的主键(厂家Id)的。所以在商品表中增加的这列就叫“外键”,商品表就叫外键表,厂家表就叫主键表。.销售记录表如果再引用商品表,这时,销售记录表就是“外键表”,商品表又成了“主键表”

    3有目的的数据冗余的好处:

      1)重复存储或传输数据以防止数据的丢失。

      2)对数据进行冗余性的编码来防止数据的丢失、错误,并提供对错误数据进行反变换得到原始数据的功能。

      3)为方便处理而使同一信息在不同地点有不同的表现形式,如一本书的不同语言的版本。

      4)为了提高数据的检索速度。

  • 相关阅读:
    bootstrap-treeview 父子节点的全选与取消全选
    Nginx 中 proxy_pass 的斜杠问题
    Nginx 安装 echo-nginx-module 模块
    Nginx 内置变量与正则
    SpringBoot 整合 FastDFS
    CentOS7 搭建 FastDFS 环境
    配置 Idea + EmmyLua插件开发环境
    SpringBoot 整合 RabbitMQ
    数据结构笔记-环形队列
    SpringBoot 通过自定义 Mybatis 拦截器,实现 SQL 的改写
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/7168635.html
Copyright © 2011-2022 走看看