【问题标题】:How should I store a range of data in a mysql database?我应该如何在 mysql 数据库中存储一系列数据?
【发布时间】:2013-02-21 08:38:59
【问题描述】:

假设我必须创建一个关于药物列表的数据库表。

  • 第一列是具有自动增量的唯一标识符字段。例如,“1”
  • 第二列包含药物名称。例如,“曲马多”
  • 第三列包含权重列表。例如,“30g、40g、50g、60g”

使用 php while 循环和数组,我可以使用以下方法回显此数据:

while ($row = mysql_fetch_array($result)) {
   echo "Drug Name: {$row[1]} Drug Weights: {$row[2]}"
}

虽然这可行,但我知道这绝对不是最好的方法。权重列表必须是 varchar,而不是实际的单个整数。如第三列所示,存储和回显单个产品的一系列信息的最佳方式是什么?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    在单独的耦合表中。制作一个包含所有可能权重(id、值)的“weights”表,并制作一个包含 2 列(组合主键)的“drugs_to_weights_coupling”:一个带有药物的 id,一个带有重量的 id。

    这称为“多对多”关系,可以是Googled as such easily.

    【讨论】:

    • @JWH 这为您提供了一个干净的数据模型。然后,您可以使用表连接查询它(用于输出),并对 sql 语句中的权重替代项应用连接运算符,以获得每种药物的单行。
    • @Sherlock Holmes,你非常实用的答案永远不会让人印象深刻!
    猜你喜欢
    • 2012-11-12
    • 2012-12-17
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多