Java 哪种方法更适合在sqlite数据库中存储键值对?
我正在创建一个聊天机器人,它将有自己的内存。它将以键值对的形式保存用户的输入,然后访问该内存以查看如何构造响应。数据库基本上将充当一个字典,随着bot接收输入而增长 第一种方法是简单地创建两列并向Value列添加多个值。值列存储多个字符串。我甚至不知道我会怎么做。。。像这样:Java 哪种方法更适合在sqlite数据库中存储键值对?,java,sql,sqlite,chatbot,Java,Sql,Sqlite,Chatbot,我正在创建一个聊天机器人,它将有自己的内存。它将以键值对的形式保存用户的输入,然后访问该内存以查看如何构造响应。数据库基本上将充当一个字典,随着bot接收输入而增长 第一种方法是简单地创建两列并向Value列添加多个值。值列存储多个字符串。我甚至不知道我会怎么做。。。像这样: Key | Values | "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" |
另一种方法是让一个键列对应多个值。每个值列存储一个字符串。像这样:
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。我想问题很清楚,那是三个独立的值。是的,它们是三个独立的值!我还添加了一个编辑来澄清这一点。哦,它们显然是问题中的三个独立值。我只是怀疑这在应用方面是否有意义。