在一列中存储多个值而在多个值中存储多个列

时间:2013-04-21 21:01:57

标签: sql row storage

关于Performance& “正确的做事方式”并试图找出哪种方式更好地将配置数据存储在SQL数据库中。假设您有网站配置数据,用于设置一个人访问该网站必须达到的最小和最大年龄。

CREATE TABLE SiteConfig
(
  featureName varchar(100),
  value varchar(100),
)

哪个更好:

  • 将它们全部存储在一行中并使用explode();在PHP中处理它。

    featureName:“ageRequirement”

    值:“13 | 60”

  • 要将它存储在每个功能的单独行中,只需选择所需的功能。

    featureName:“minAge”

    值:“13”

    featureName:“maxAge”

    值:“60”

由于网站功能的数量,这相当于60 ROWS的数据与大约25。

2 个答案:

答案 0 :(得分:0)

如果这些是你永远不会在数据库中使用的值,那么它们都可以工作。

如果您怀疑自己想要使用数据库中的值,则不希望它们具有相同的值。这将使查询数据变得复杂和低效。

答案 1 :(得分:0)

存储它有两个独立的功能。

您可能希望访问数据库中的功能,而不是应用程序代码中的功能。

没有理由解析逗号分隔的字符串以获得两个功能。

不可否认,在用逗号分隔的两个数字的情况下,没有太多可能出错。然而,这是一个滑坡,您可能很快就会发现自己试图将多个字段填充到一个字符串中,然后投入大量资源来解析字符串。