时间:2017-04-29 11:41:58

标签: sql sqlite

我确信之前已经问过这个问题,但我对SQL这么新,我甚至无法将正确的搜索词组合起来找到答案!所以,如果这是重复,请道歉。

必须在运行时创建db I创建,然后在创建后输入数据。某些字段将具有不同数量的条目,但在创建时该数字未知。

我努力想出一个db设计来处理这种变化。

作为(匿名)示例,请参阅以下内容:

| 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"而变化。

我的想法是:

  1. 只需输入一个以逗号分隔的字符串,并在运行时分开。看似hacky,并且无法通过salad_ingredients进行搜索!

  2. 对于每种沙拉都有另一张桌子,例如" apple_ingredients",每种成分可能有不同的行数。但是,我无法做到这一点,因为我在创作时并不知道salad_name! :(

  3. 有一个单独的salad_ingredients表,其中每一行都是salad_name,并且有一个任意数量的成分字段,比如10,所以你最多可以有10种成分。再说一次,看起来有些笨拙,因为我不喜欢未使用的田地,如果出现超级复杂的沙拉会怎样?

  4. 有没有我错过的解决方案?

    谢谢, 丹

1 个答案:

答案 0 :(得分:2)

根据我的经验,最佳解决方案基于规范化的表格集

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 ingredients

使用正确的连接,您可以获取(选择)并过滤(在哪里)您需要的所有值