Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 哪种方法更适合在sqlite数据库中存储键值对?_Java_Sql_Sqlite_Chatbot - Fatal编程技术网

Java 哪种方法更适合在sqlite数据库中存储键值对?

Java 哪种方法更适合在sqlite数据库中存储键值对?,java,sql,sqlite,chatbot,Java,Sql,Sqlite,Chatbot,我正在创建一个聊天机器人,它将有自己的内存。它将以键值对的形式保存用户的输入,然后访问该内存以查看如何构造响应。数据库基本上将充当一个字典,随着bot接收输入而增长 第一种方法是简单地创建两列并向Value列添加多个值。值列存储多个字符串。我甚至不知道我会怎么做。。。像这样: Key | Values | "i play" | "games","with","music" | "and i" | "run", "sleep", "like" |

我正在创建一个聊天机器人,它将有自己的内存。它将以键值对的形式保存用户的输入,然后访问该内存以查看如何构造响应。数据库基本上将充当一个字典,随着bot接收输入而增长

第一种方法是简单地创建两列并向Value列添加多个值。值列存储多个字符串。我甚至不知道我会怎么做。。。像这样:

 Key     | Values                 |
"i play" | "games","with","music" |
"and i"  | "run", "sleep", "like" |
  Key    | Value 1 | Value 2 | Value 3 |
"i play" | "games" | "with"  |"music"  |
"and i"  | "run"   | "sleep" | "like"  |
另一种方法是让一个键列对应多个值。每个值列存储一个字符串。像这样:

 Key     | Values                 |
"i play" | "games","with","music" |
"and i"  | "run", "sleep", "like" |
  Key    | Value 1 | Value 2 | Value 3 |
"i play" | "games" | "with"  |"music"  |
"and i"  | "run"   | "sleep" | "like"  |
我知道在关系数据库中,将多个值存储到一个键是一个很大的禁忌,所以如果有更好的方法让我知道

编辑:关于机器人如何创建响应,它将获取一个键并从多个值中随机选择一个值。例如,如果我播放的是选定的关键点,它将随机选择一个值,例如音乐。从那里,它将找到一个新的键,称为play music。如果该键不存在,它将构造一个键,并从多个值中随机选择一个值


我曾经考虑过在value列中使用arraylist,这样它就是一个真正的单键、单值键-值对,但我不确定SQLite是否支持列表

我认为这两种方法都不是好方法。这个怎么样

key         value
"i play"    "games"
"i play"    "with"
"i play"    "music"
"and i"     "run"
"and i"     "sleep"
"and i"     "like"

也就是说,键/值对应该正好是这样,每个键/值对一行。当然,您可能需要其他列来指定其他信息,例如实体id或多个值的顺序。

我认为这两种方法都不是好方法。这个怎么样

key         value
"i play"    "games"
"i play"    "with"
"i play"    "music"
"and i"     "run"
"and i"     "sleep"
"and i"     "like"

也就是说,键/值对应该正好是这样,每个键/值对一行。当然,您可能需要其他列来指定其他信息,例如实体id或多个值的顺序。

我通常不喜欢存储键值对,但在某些情况下,它们是唯一的选择。如果是这样,我建议只存储一个键和一个值。所以您的第一个示例将有6行。。。如果只有3个属性值,那么第二种方法也可以。我通常不喜欢存储键值对,但在某些情况下,它们是唯一的选择。如果是这样,我建议只存储一个键和一个值。所以您的第一个示例将有6行。。。如果您只有3个属性值,那么第二个方法也可以工作。您必须确定一个值应该是什么。音乐游戏真的有三个价值观还是只有一个价值观?@Thilo。我不知道你的问题是对我还是对OP。我想问题很清楚,那是三个独立的值。是的,它们是三个独立的值!我还添加了一个编辑来澄清这一点。哦,它们显然是问题中的三个独立值。我只是怀疑这在应用方面是否有意义。你必须决定一个值应该是什么。音乐游戏真的有三个价值观还是只有一个价值观?@Thilo。我不知道你的问题是对我还是对OP。我想问题很清楚,那是三个独立的值。是的,它们是三个独立的值!我还添加了一个编辑来澄清这一点。哦,它们显然是问题中的三个独立值。我只是怀疑这在应用方面是否有意义。