【问题标题】:Database Design - Is redundancy better than adding more relationship?数据库设计 - 冗余比添加更多关系更好吗?
【发布时间】:2013-07-23 14:58:07
【问题描述】:

您好,我想知道这些数据库设计中哪一种更好:

我有 Shopping db,它有两个表:CategoriesBrands。这两个表都有以下列:namedescriptionimage_url

那么保留重复的列可以吗?或者我应该创建一个存储这些信息的表?

为了更好地形象化,这里有一个图表

多余的

| CATEGORIES    |    | BRANDS        | 
| - name        |    | - name        |
| - description |    | - description |
| - image_url   |    | - image_url   |

还是添加一个新表?

| CATEGORIES    |    | INFORMATIONS  |      | BRANDS        | 
|               |--->| - name        |<-----|               |
| - info_id     |    | - description |      | - info_id     |
                     | - image_url   |

谢谢

【问题讨论】:

  • 除非您有很好的相反理由,否则规范化(第二种方法)几乎总是更好。阅读更多关于 Database Normalization 的维基百科文章。
  • 感谢您的回复。第二个会慢吗?
  • 是的,但程度无关紧要。 (假设您的索引很好;您的示例很简单,不会搞砸,因为所有外键都指向主键,并且主键始终被索引。)
  • 糟糕 - 我认为我没有正确理解您的问题。如果您有类别名称和品牌名称,而不是简单地共享 names 字段,那么两个不同的表实际上效果更好 - 同样,除非您有充分的相反理由。
  • 感谢回复,我会保留两张单独的表格

标签: mysql database-design


【解决方案1】:

在这种情况下,它确实不是相同的信息。它是 category_name、category_description、brand_name 和 brand_description。

创建一个表格来保存有关许多事物的通用信息是一个坏主意。

当谈到关于(去)规范化的讨论时,它通常被认为是规范化数据的更好设计,我将从这样的设计开始。随着数据的发展和增长,可能需要对某些表进行非规范化处理,因为数据检索速度会更快,但代价是存储空间和失去数据一致性的风险。

【讨论】:

  • 非常感谢!我会保留第一个结构
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 2011-09-24
  • 2018-05-30
  • 2013-10-07
  • 2018-06-11
相关资源
最近更新 更多