【问题标题】:Lookup Field in MySQLMySQL中的查找字段
【发布时间】:2010-11-11 14:43:31
【问题描述】:

我有一组用于 MySQL 数据库的类别,它们不会有太大变化,但有时可能会发生变化。 (可能有十几个选择)

对于这种情况,答案基本上是多项选择,我应该只在我的主表中使用一个文本字段然后在 PHP 中限制答案,还是制作一个单独的表来保存查找值然后存储来自主表中的类别表?

只是寻找规范化最佳实践:)

【问题讨论】:

  • 这与 php、php5 甚至 mysql 无关,我认为唯一相关的标签是数据库
  • 它与 PHP/5 有关,因为在这种情况下,替代方法是在 PHP 中管理答案 - 它是 MySQL,而不是 Access 或例如 Microsoft SQL Server。我认为更多的细节总比更少的好。
  • 但这不是特定于 php 或 mysql 的,我想不出另一个不适用的 web 框架/数据库
  • 我不同意你的观点,但这是一个循环论证。我删除了除数据库之外的所有标签 - 互联网现在是安全的 dtarh。

标签: database


【解决方案1】:

规范化最佳实践是您始终假设事物可以并且将会改变。所以再做一张桌子。 :)

【讨论】:

  • 事实证明你是对的,呵呵。我意识到我也可以为其他目的加载和缓存类别,并从数据库中严格管理它们。
【解决方案2】:

两者都可以,它们的后果如下:

  • 文本字段表示答案集保存在 PHP 代码中
  • 查找表意味着答案集保存在数据库中

我认为这取决于它们是“数据”(-> 数据库)还是真正的应用程序的一部分(-> 肯定是 PHP 代码,例如,如果您的代码中有 if ($cat == 'x') { ... }。)

在我看来它们更像是数据,所以在这种情况下将它们放在一个表中。

【讨论】:

  • 仅仅因为您将变量与静态进行比较并不意味着静态只属于代码..
【解决方案3】:

我建议您维护一个包含 ID 和类别名称的类别表以及您认为适合添加到此表中的任何其他列。然后在任何其他表中通过其 ID 引用此类别表。

您的 SQL 将需要执行 LEFT JOIN 或从其中 sometable.cid = categories.id 的两个表中进行选择

【讨论】:

    【解决方案4】:

    您应该始终使用单独的表格,我找不到不这样做的理由,特别是如果您需要进行任何类型的报告等。

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多