-1

我正在建立一个新网站,所以我的想法是我有 3 种不同类型的产品,它们共享一些数据并且每个都有自己的数据,我正在考虑product为共享数据创建一个表并创建 3 个表对于每种类型的特定数据。JOIN但很快我发现如果不在父表和 3 个孩子之间做一个,我就无法加载任何产品。我不确定我是否应该使用这个解决方案,或者我应该创建 3 个表并复制它们之间的共享列。

每种方法的优缺点是什么?

我应该遵循哪一个?

4

2 回答 2

2

简单的答案是“这取决于你想做什么”。
以下是在不同场景中使用每种方法的一些优点和缺点:

产品表和每种产品类型的 3 个子表

优点

  1. 如果您有许多与类型无关的查询,这是毫无疑问的赢家。例如,如果您有一个“类别”列表,其中显示所有产品而不管其类型如何,那么这是一个简单的查询 - 没有连接,一切都很酷。
  2. 您的所有产品都在一个表中,有利于未来的定制,如果您想添加另一种产品类型,则需要另一个包含数据的表
  3. 没有重复数据。无处。

缺点

  1. 这种方法唯一真正的缺点实际上是您的产品。我的意思是:如果您不需要每种产品类型的额外数据,那对您来说会容易得多。所以,你必须使用JOIN. 不过,这没什么不好。

3 个产品表,每个表用于不同的产品类型

优点

  1. 好吧,如果您总是按产品类型显示数据,那么这种方法有一个明显的优势。我的意思是:如果您的数据库产品是比萨饼计算机宠物,那么您可能永远不会同时对所有 3 种产品类型运行查询。在这种情况下,您可能需要考虑这种方法。
  2. 在一个类型中更容易查询。

缺点

  1. 如果您需要在类别视图中显示所有产品,则必须对此进行一些严肃UNION的查询。那将比选择JOIN.
  2. nn产品类型表。
  3. 可能重复列。坏事。

PS:以上没有考虑到您的具体需求。这是一个通用的建议,在通用条件下,没有考虑查询性能。
虽然,如果您的数据大小合理,您不应该担心这两种方法中的任何一种(第一种方法具有明显优势)。

于 2013-10-08T08:14:41.193 回答
1

JOIN是关系数据库的一个组成部分。它可能是“坏”的唯一方法是在查询中重复创建一个小麻烦。JOIN对消除重复数据非常有帮助

于 2013-10-08T08:06:49.500 回答