我有一个网上商店,用户可以在这里购买带有自己产品的小商店.这些产品中的每一个都可以有与之相关的问题,并且商店的所有者有能力回答这些问题.此信息存储在3个表中,包括“问题”(QuestionID,ProductID,…)表,“产品”(ProductID,ShopID,…)表和“商店”(ShopID,OwnerID,…)表.
在“问题”表格中设置ShopID(允许店主查看他的所有问题)或加入这三个表格以获得与某个商店匹配的问题更好吗?
加入并避免冗余信息几乎总是更好.为了达到性能目标,您必须只有
denormalize才能达到性能目标 – 在首先尝试使用
normalized表之前,您无法知道是否需要执行此操作.
请注意,非规范化有助于提高读取性能,但代价是减慢写入速度并使编码错误更容易导致数据不同步(因为您在多个地方存储相同的内容,现在必须确保更新一切).