sqlite 变量和列中未知数量的条目

标签 sql sqlite

我确信这个问题以前有人问过,但我对 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”的内容有所不同。

我的想法是:

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

  2. 为每种沙拉准备另一个表,例如“apple_ingredients”,每种成分的行数可能不同。但是,我不能这样做,因为我在创建时不知道沙拉名称! :(

  3. 有一个单独的 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/

相关文章:

sql - spring.sql.init.schema-locations 不工作

python - 遍历python sqlite数据库

sql查询精确搜索比别人

sql - 如何根据另一个表的聚合查询更新一个表

sql - 比较sql中的ASCII值

mysql - 选择两个日期之间的事件的最佳 SQL 查询

c# - sql 税和 odbc 代码不会插入?

mysql - 如何从同一个mysql表中选择列两次?

sql - 使用变量与文字时远程查询速度很慢

c# - NLOG,在 Windows Phone 8 上登录 SQLite