我确信这个问题以前有人问过,但我对 SQL 很陌生,我什至无法组合正确的搜索词来找到答案!因此,如果这是重复,我们深表歉意。
我正在创建的数据库必须在运行时创建,然后在创建后输入数据。某些字段将具有不同数量的条目,但该数量在创建时未知。
我正在努力想出一个数据库设计来处理这种变化。
作为(匿名)示例,请参见下文:
| salad_name | salad_type | salad_ingredients | salad_cost |
| apple | fruity | apple | cheap |
| unlikely | meaty | sausages, chorizo | expensive |
| normal | standard | leaves, cucumber, tomatoes | mid |
如您所见,“salad_ingredients”的内容有所不同。
我的想法是:
只需输入一个以逗号分隔的字符串并在运行时分隔。看起来很hacky,无法通过salad_ingredients搜索!
为每种沙拉准备另一个表,例如“apple_ingredients”,每种成分的行数可能不同。但是,我不能这样做,因为我在创建时不知道沙拉名称! :(
有一个单独的 salal_ingredients 表,其中每一行都是一个 salal_name,并且有任意数量的成分字段,例如 10 个,因此最多可以有 10 种成分。再次,似乎有点老套,因为我不喜欢未使用的字段,如果出现 super 复杂的沙拉会发生什么?
是否有我错过的解决方案?
谢谢, 丹
最佳答案
根据我的经验,最好的解决方案是基于一组标准化的表
table salads
id
salad_name
salad_type
salad_cost
。
table ingredients
id
name
和
table salad_ingredients
id
id_salad
id_ingredients
其中 id_salad 是来自沙拉的相应 if id_ingredients 是对应的 if from 成分
使用正确的连接,您可以获取(选择)和过滤(其中)您需要的所有值
关于sqlite 变量和列中未知数量的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43695267/