精华内容
下载资源
问答
  • 数据库冗余字段

    2019-07-09 17:43:01
    什么是冗余字段? 在设计数据库时,某一字段属于一个表,但它又同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段。 ——以上是我自己给出的定义 冗余字段的存在...

    什么是冗余字段?

    在设计数据库时,某一字段属于一个表,但它又同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段。

    ——以上是我自己给出的定义

    冗余字段的存在到底是好还是坏呢?这是一个不好说的问题。可能在有人看来,这是一个很蹩脚的数据库设计。因为在数据库设计领域,有一个被大家奉为圭臬的数据库设计范式,这个范式理论上要求数据库设计逻辑清晰、关系明确,比如,”用户昵称”字段”nickname”本来属于表”user”,那么,表示”用户昵称”的字段就唯一的只应该属于”user”表的”nickname”字段,这样,当用户要修改昵称的时候,程序就只需要修改 user.nickname这个字段就行了,瞧,很方便。不过问题也随之而来,我在其他数据表(如订单orders表)里只存储了用户的ID,我要通过这个ID值得到用户昵称该怎么办呢?一个普遍的解决方法是通过联接(join),在查询时,通过id这个唯一条件联接两个表,从而取到用户的昵称。

    这样确实是没问题,我也一直觉得这样是最好的方案,扩展方便,当要更新用户信息时,程序中要修改的地方很少,但是随着数据库里数据不断增加,百万,千万,同时,用户表的数据肯定也在不断的增加的,它可能是十万,百万。这个时候,你会发现两个表通过联接来取数据就显得相当费力了,可能你只需要取一个nickname这个用户昵称属性,你就不得不去联一下那个已经几十万的用户表进行检索,其速度可想而知了。

    这个时候,你可以尝试把nickname这个字段加到orders这个订单表中,这样做的好事是,当你要通过订单表呈现一个订单列表时,涉及用户的部分可能就不需要再进行联接查询了。当然,有利就有弊,这样做的弊端就是,当你尝试更新用户信息时,你必须记得用户信息表里当前被更新的字段中,有哪些是冗余字段,分别属于哪些表,找到他们,然后加入到你的更新程序段中来。这个是程序中的开销,开销在开发人员的时间上了。至于这样做是否值得,就得看具体情况而定了。

    所以,目前要创建一个关系型数据库设计,我们有两种选择:

    1. 尽量遵循范式理论的规约,尽可能少的冗余字段,让数据库设计看起来精致、优雅、让人心醉。
    2. 合理的加入冗余字段这个润滑剂,减少join,让数据库执行性能更高更快。

    选择哪一种呢?如果你是一个美学狂人,并且财大气粗,非要使用第一种方案,也没关系,这种方案的短板并非不可救药的。比如,你可以增加服务器,从数据库集群入手,进行读写分离,读的时候可以将压力分散到不同的数据库服务器上,这样也可以获得很好的性能,只是多付出了硬件成本和维护成本。或者,你可以在数据库前端架设Memcached之类的缓存服务,减少读写数据库的次数,也可以达到同样的效果。问题在于你确定你需要缓存之类的东西。

    当然,如果你跟我一样,只有一台每月几十元买来的vps,甚至可能是一个虚拟主机,建议还是暂时压制你的美学欲望,跟我一起选择第二种方案吧,除非你愿意你的整个数据库都一直只有零零星星的几条数据

    展开全文
  • 数据库的冗余字段

    2021-03-02 14:06:57
    1冗余字段的定义 冗余字段是指反复出现的,重复的字段。也就是说在数据库中如果表a出现过字段b,表c再出现字段b,那么字段b就可以被看作是冗余字段了。 2冗余字段的弊端 如果参照三范式,那我们在设计数据库的时候就...

    1冗余字段的定义

    冗余字段是指反复出现的,重复的字段。也就是说在数据库中如果表a出现过字段b,表c再出现字段b,那么字段b就可以被看作是冗余字段了。

    2冗余字段的弊端

    如果参照三范式,那我们在设计数据库的时候就必须致力于消灭冗余字段,毕竟如果我们需要更新某条记录,而这条记录又恰好包含了冗余字段,那么我就必须更新所有携有冗余字段的表。如果冗余冗余字段只出现在很少的表中那么这不算什么大问题。但是如果有很多很多张表都携有冗余字段,不仅会使数据库性能降低还会带来数据不一致等一系列问题。所以,我们目前所接触的经典教材都在强调三范式还是很有道理的。

    3冗余字段的用处

    冗余字段确实有很大地弊端,这是否说明我们就该将之视为洪水猛兽,弃而不用呢?大可不必。举个例子来说表a有三个字段:员工号,员工姓名,员工出生日期;表b有三个字段员工号,员工工资,员工工龄;这样的设计符合三范式。但是我们发现当我们查询员工工龄的时候不仅仅需要知道员工号,还需要知道员工姓名。这个时候我们需要使用join语句或者使用视图来获取员工工龄和员工姓名。当数据只有百条,千条时这样设计并没有什么问题,但当数据库中有几万条数据时再使用join语句就未必是个好方法了。这时候如果在表b中增加一个姓名的冗余字段就能提升数据库的性能。

    4冗余字段的使用原则

    冗余字段不是妖魔鬼怪。在像我这样的菜鸟眼中它可能像一头狮子一样凶猛可怕,但在高手面前,它却会像小猫一样乖巧可爱。想要成为高手,就必须学会驾驭雄狮,而想要驾驭雄狮就必须去了解它。下面来讨论一下冗余字段的使用原则。

    a不随便使用冗余字段。

    b只在关键数据上使用冗余字段

    c根据业务需求决定是否使用冗余字段

    d查询多更新少 加冗余

    展开全文
  • 设置冗余字段的要求: 设置冗余字段要求该字段不常变化,方便维护。 为什么要设置冗余字段? 虽然说冗余字段的存在,不符合三大范式,但是存在即合理。 冗余字段的合理使用可以大大提高数据库的查询效率,方便开发。...

    设置冗余字段的要求:

    设置冗余字段要求该字段不常变化,方便维护。

    为什么要设置冗余字段?

    虽然说冗余字段的存在,不符合三大范式,但是存在即合理。
    冗余字段的合理使用可以大大提高数据库的查询效率,方便开发。

    展开全文
  • 冗余字段的理解

    千次阅读 2018-08-28 15:51:46
    1.冗余字段是否就是不能有的? 不是。冗余字段虽然叫冗余,基于数据库结构设计的第三范式,冗余字段是不可以出现的,会使数据库出现多余的数据。但是在实际的工作过程中,冗余字段是可以出现的。多表的关联查询,...

    1.冗余字段是否就是不能有的?
    不是。冗余字段虽然叫冗余,基于数据库结构设计的第三范式,冗余字段是不可以出现的,会使数据库出现多余的数据。但是在实际的工作过程中,冗余字段是可以出现的。多表的关联查询,如果表多数量大,就会大大的降低查询效率,反而会降低用户体验。
    2.什么情况下用冗余字段比较合理?
    如果一个字段修改次数非常少,基本可以忽略不记,并且这个字段冗余之后,可以大大的减少工作量,提高工作效率,那这个字段就可以冗余。
    反之如果一个字段经常修改,并且实时记录,那最好不要冗余,否则会带来很多不必要的操作,不停的更新数据。
    总而言之,冗余字段是否存在,根本根据是是否可以提高数据库效率,工作效率,如果在满足条件的情况下,冗余字段是可以出现的。

    展开全文
  • 重新认识冗余字段

    千次阅读 2016-10-14 23:55:17
    1冗余字段的定义 冗余字段是指反复出现的,重复的字段。也就是说在数据库中如果表a出现过字段b,表c再出现字段b,那么字段b就可以被看作是冗余字段了。 2冗余字段的弊端 如果参照三范式,那我们在设计...
  • 另外冗余字段,我们有一个表是记录图片的,另一个表是记录商品的。 我们可以在图片你放商品图片里的url 同时商品里放图片id和图片URL 这两个字段是重复的,这就是数据冗余,我们设计数据库是不要出现冗余信息,为啥...
  • 最近在做一个新的小功能,设计了几个表,在业务的进行中,由于框架的限制,连表查数据需要自己写sql,单表则不需要,于是引发了我是否在表中写冗余字段来简化我的代码的问题。  1.冗余字段是否就是不能有的?  ...
  • 数据库冗余字段解决思路

    千次阅读 2019-10-25 18:24:56
    保证业务情况下前期收集整理数据统计痛点开发自查冗余字段上报中期确认不再维护字段并且整理对应代码平滑剔除字段后期删除字段与培训平滑剔除三个月后对字段进行删除维护共有的表结构介绍wiki 前期收集整理 数据统计...
  • 1.什么是冗余字段? 在设计数据库时,某一字段属于一个表,但它又同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段。 2.冗余字段应用场景 冗余字段的存在到底是好...
  • 数据库冗余字段的理解。

    千次阅读 2017-08-21 20:12:47
    最近在做一个新的小功能,设计了几个表,在业务的进行中,由于框架的限制,连表查数据需要自己写sql,单表则不需要,于是引发了我是否在表中写冗余字段来简化我的代码的问题。  1.冗余字段是否就是不能有的?  ...
  • 创建冗余字段的目的有两个:1.避免连表查询;2.保存历史快照。 保存历史快照(比如订单表的单价)不存在数据一致性问题,所以无需过多讨论。 因避免连表查询而创建的冗余字段,如果冗余字段可能会修改,则存在数据...
  • 在开发时,很多时候都需要使用空间换时间,而数据库设置冗余字段就是这个出发点,首先我们就需要知道什么是冗余字段 什么是冗余字段? 就是数据表中存在多余的字段 例如:文章表:article_id和article_name同时存在,...
  • 数据库中的冗余字段

    2019-11-14 15:17:58
    在建库的时候,尤其是复杂的数据库,难免会出现大量的冗余字段,出现数据冗余 数据冗余:在一个数据集合中重复的数据称为数据冗余. 数据冗余的目的: 数据的应用中为了某种目的采取数据冗余方式。 1、重复...
  • 使用冗余字段解除强关联
  • 数据库建立冗余字段的原则

    千次阅读 2018-02-13 17:45:09
    冗余字段,是设计数据的时候常用的一种手段。优点是,可以在很大程度上避免数据库的关联查询,不使用join提升查询速度。缺点是,数据一致性维护成本高,需要维护冗余字段的一致性。 数据库model设计,致力于不要建立...
  • 我们需要隐藏,因为我们不需要privot,而且pritvot也不在我们模型本身,他是中间数据另外冗余字段,我们有一个表是记录图片的,另一个表是记录商品的。我们可以在图片你放商品图片里的url同时商品里放图片id和图片...
  • 关于数据库冗余字段设计的利与弊

    千次阅读 2020-03-16 14:37:18
    因为近期完全是我负责某项目开发,所以关于数据库冗余字段的设计,有了一些新的见解。 其实在数据库设计方面,对于冗余字段的设计,网上也是褒贬不一的。通过资料的查询,大致有以下两个方向: 1、支持冗余字段的...
  • 数据库设计冗余字段

    千次阅读 2017-01-05 16:49:54
    冗余字段的个人理解: table1 id name other table2_id table2 id name phone email   当table1 中的 table2_id 关联的是table2 中的id 如果table1 想要根据table2_id 来获取 table2 的name 字段 可以 连接查询...
  • 数据库中冗余字段的作用

    千次阅读 2016-12-09 23:40:30
    按照第三范式的要求,是不应该存在冗余字段的,但现在我改变了看法,认为冗余字段非常有必要。 例如: 在订单表中,‘客户名称’字段就是冗余字段,加了这个字段,就需要在客户信息表修改(客户名称改变)的时候...
  • 很多系统有比较多的重复使用字段,比如一些下拉框数据,处理解决一些冗余字段,将这些数据缓存到浏览器,可以减少查找数据库提高用户体验== /** * 获取字典值 * * @return */ public Map getDictionaryMap() { ...
  • 在设计数据库时,某一字段属于一个表,但它又同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段。 ——以上是我自己给出的定义 冗余字段的存在到底是好还是坏呢...
  • 关于数据库冗余字段

    千次阅读 2011-10-13 14:25:30
    关于数据库冗余字段 2011-10-13 星期四 阴雨 原则: 1. 不要随便作冗余! 2. 冗余的字段千万不要随便暴露出去! 3. 要冗余也要冗余有业务关系的字段! 最后一点——还是不要随便作冗余! 冗余就...
  • 依个人理解,冗余字段就是本存在一张表的字段,也出现在另一张表中。 例如:有三张表,用户表、商品表、订单表,用户表中有字段name,而订单表中也存在字段name。 对于这个字段冗余有好有坏 好: 从用户表、商品...
  • 什么是冗余字段?在设计数据库时,某一字段属于一个表,但它又同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段。——以上是我自己给出的定义冗余字段的存在到底是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 105,978
精华内容 42,391
关键字:

冗余字段