【问题标题】:Database structure for Cocktail Recipes鸡尾酒配方的数据库结构
【发布时间】:2017-01-22 21:59:31
【问题描述】:

首先我要说我是 SQL 和 MySQL 的初学者,所以决定投资这个宠物项目来发展我的数据库知识。

目标:建立一个非常简单的网站来访问鸡尾酒配方数据库。它具有id、name、glass、成分、方法、ice、garnish、comment的字段。

如果所有字段都是线性的,但成分列让我头疼。

这是一个食谱示例:

有些食谱可能有 3 种成分,有些可能有 5 种成分,有些可能有 10 种成分,有时使用不同的方法来测量这些成分(毫升、破折号、茶匙……)。

我的第一个问题是构建这样一个数据库的最简单方法是什么?我将如何实现它?

  • 在同一列中用逗号分隔所有成分
  • 为每个食谱创建一个额外的表(可以超过 200 个食谱)
  • 用库存中的所有可用原料创建一个表,然后以某种方式将它们连接到配方表(多对多?)
  • 完全不同的东西

拥有一张包含所有成分的表格对于库存记录的未来发展会很有趣。

由于我要从漂亮的、可打印的 Excel 表格升级到 sql 数据库,我的第二个问题是将所有食谱移动到数据库? 再次,我将面临成分部分的问题。 我是否应该尝试导出和导入,或者只是将其吸收并手动输入所有食谱?

感谢您阅读并对此主题发表任何评论:)

【问题讨论】:

  • 这是我要做的:(1) 创建一个名为ingredients 的单独表。 (2) 用cocktail_idingredient_id 的组合UNIQUE KEY 创建一个新表cocktail_ingredients。如果您愿意,也可以在此处添加proportion 列。 (3) 创建一个可以描述该方法的新表recipeingredientscocktailsrecipes 之间描述的组合关系目前还不是很清楚,因此立即对此发表评论不是一个好主意。 “在同一列中用逗号分隔的成分”只会让生活变得困难 - 而是“规范化”。
  • 一张食谱表,一张配料表,一张表,说明每种配料的份量属于每个食谱
  • 谢谢!如果遇到问题,我会尝试并报告。

标签: mysql sql database database-design


【解决方案1】:

我建议您查看database normalisation. 本质上,这是将数据分解为特定组,然后用该数据形成一个新表的过程。

这样做的几个原因是 a) 良好的结构可以更容易地查找、维护、扩展等 b) 您希望重复尽可能少的数据。如果您的数据库有一百万条记录,您会希望尽可能高效。

表 1: ID(PK),名称,方法,Ice,装饰,评论

1 柯林斯鸡尾酒 摇匀所有材料... 立方 柠檬片 对于接骨木花...

表 2: ID(PK)、T1_ID(外键)、成分、数量、度量

第 1 行-

1:1:Beefeater 杜松子酒:2:茶匙

第 2 行-

2:1:柠檬汁:1:茶匙

第 3 行-

3:1:糖浆:1:茶匙

第 4 行-

4:1:苏打水75:ml

【讨论】:

  • 好的,所以现在我有这个imgur.com/a/1mVPl 。后续问题:在“食谱”表中,“数量”和“量度”列是否有可能以某种方式让它们相互依赖?我的目的是易于将例如盎司转换为毫升或其他测量值。或者这是我必须在客户端做的事情?
  • 你能再举一个例子吗?你是什​​么意思?你的意思是当输入时,例如,1 measure会自动输入44ml?
  • 我想我只是把它复杂化了,但是是的,就像你说的,1 量杜松子酒也可以是 25 毫升杜松子酒和 1 盎司杜松子酒。我的目标是在展示食谱时拥有所有的可能性。用户可以选择他们希望配方显示的单位系统。
  • 数据库只保存数据。如果您愿意,您可以在添加数据之前通过 PHP 等手动执行计算。例如,计算所有变量,然后通过 MySQL 语句插入变量。
猜你喜欢
  • 2016-07-22
  • 1970-01-01
  • 2019-01-09
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 2018-10-18
  • 1970-01-01
  • 2017-01-20
相关资源
最近更新 更多