在MySQL中必要时存储冗余信息或连接表是否更好?

Oma*_*ohl 8 php mysql database database-design e-commerce

我有一个网上商店,用户可以在这里购买带有自己产品的小商店.这些产品中的每一个都可以有与之相关的问题,并且商店的所有者有能力回答这些问题.此信息存储在3个表中,包括"问题"(QuestionID,ProductID,...)表,"产品"(ProductID,ShopID,...)表和"商店"(ShopID,OwnerID,...)表.

在"问题"表中设置ShopID(允许店主查看他的所有问题)或加入这三个表以获得与某个商店匹配的问题更好吗?

Don*_*nie 11

加入并避免冗余信息几乎总是更好.只有在必须这样做才能达到性能目标时才应该进行非规范化 - 并且在首先尝试使用规范化表之前,您无法知道是否需要执行此操作.

请注意,非规范化有助于读取性能,但代价是减慢写入速度并使编码错误更容易导致数据不同步(因为您在多个地方存储相同的内容,现在必须确保更新一切).