【发布时间】:2013-07-23 14:58:07
【问题描述】:
您好,我想知道这些数据库设计中哪一种更好:
我有 Shopping db,它有两个表:Categories 和 Brands。这两个表都有以下列:name、description 和 image_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