我已经能够制作2个ActiveRecord表,个人资料和 Bot 。我一直无法弄清楚如何正确地链接它们。
有数千个个人资料,列用户名,性别。列 botname,level
的少数 Bots当机器人访问个人资料时,需要记录两条信息。应针对该特定机器人更新已访问和响应。 访问是一个布尔值,表示某个特定机器人已访问过该特定配置文件。 响应是一个字符串,再次类似于已访问,这是对由一个特定配置文件发送的特定机器人的响应。我想我需要一个连接这两个表的第三个表。
我需要记录每个机器人访问的每个配置文件以及访问时发生的响应。
如何创建此关系以及如何设置/更新列?
由于
答案 0 :(得分:0)
我不完全确定你的要求,所以我会重申一下:
我认为你对连接表的直觉很好。但是,我认为布尔“访问”列不起作用,因为如果您有访问记录,则表明该配置文件已被访问。如果记录不存在,则不会访问该记录。
鉴于此,我认为您的表格如下:
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)
为了保持数据的完整性,您需要在此访问表与配置文件和bot表之间设置外键约束。
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将它们抛给您时(或以其他方式处理欺骗)捕获重复键错误。)
我希望有所帮助。