我正在创建一个拥有自己“记忆”的聊天机器人。它将用户的输入保存在键值对中,然后访问该内存以查看如何构造响应。该数据库将基本上充当一个字典,随着机器人接收输入而增长。
第一种方法是简单地创建两列并将多个值添加到“值”列。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" |
我知道将多个值存储到一个键是关系数据库中的一个很大的“禁忌”,所以如果有更好的方法让我知道?
编辑:所以有点关于机器人将如何创建响应,它将获取一个键并从多个值中随机选择一个值。例如,如果“I play”是选择的键,它会随机选择一个值,例如“music”。从那里,它会找到名为“播放音乐”的新键(如果键不存在,它将构造一个)并从多个值中随机选择一个值。
我想过可能在 value 列中使用 arraylist,这样它是一个真正的“一个键,一个值”键值对,但我不确定 SQLite 是否支持列表。