我不完全确定您的要求,所以我将重申它们:
- Table Profile:id、username、gender(注意我把表名改成了单数)
- 表 Bot:id、botname、级别
- “机器人”以某种方式“访问”个人资料。您需要跟踪机器人何时访问了个人资料。
- 当机器人访问配置文件时,会生成一个“响应”字符串,并且需要保留该响应字符串。我假设它需要与访问记录一起保存。
我认为您对连接表的直觉很好。但是,我认为布尔“已访问”列不起作用,因为如果您有访问记录,则表明该配置文件已被访问。如果记录不存在,那么它就没有被访问过。
鉴于此,我认为您的表格如下所示:
profile
---------
profile_id integer autoincrement
username varchar(255)
gender ...
bot
---------
bot_id integer autoincrement
name varchar(255)
level ...
visit
---------
visit_id integer autoincrement
bot_id integer
profile_id integer
visit_time datetime
response varchar(255)
为了保持数据的完整性,您需要在此访问表与您的配置文件和机器人表之间设置外键约束。
alter table visit
add constraint visit_profile_profile_id_fk
foreign key (profile_id)
references profile (profile_id);
alter table visit
add constraint visit_bot_bot_id_fk
foreign key (bot_id)
references profile (bot_id);
您需要确定给定机器人多次访问特定个人资料是否“合法”。如果不是,您应该在访问表中对 profile_id 和 bot_id 的组合设置唯一约束,并在 DBMS 向您抛出重复键错误时捕获它们(或以其他方式处理欺骗)。
我希望这会有所帮助。