MySQL表设计不当引发的数据冗余问题实例
数据冗余在MySQL表设计中常见,以下是一个具体的例子:
假设我们有一个电商应用,销售多种商品。初始设计如下:
产品表(Product):
id
(主键,整型)name
(名称,字符串)description
(描述,文本)price
(价格,浮点数)
分类表(Category):
id
(主键,整型)name
(名称,字符串)products
(关联产品,外键)
问题:设计存在冗余,因为产品的分类信息在产品表和分类表中都存在。
解决方法:可以将分类信息抽取出来,设计一个与产品无关的“分类”表。然后通过产品表的关联字段,指向对应的分类记录。
这样设计后的表结构如下:
产品表(Product):
id
(主键,整型)name
(名称,字符串)description
(描述,文本)price
(价格,浮点数)category_id
(关联分类的外键)
分类表(Category):
id
(主键,整型)name
(名称,字符串)products
(关联产品,空集)
这样设计消除了数据冗余。
还没有评论,来说两句吧...