我必须在我的数据库中实现以下内容:
用户参与的活动。每个活动的名称最多可包含 80 个字符,并且只应存储不同的活动。也就是说,如果两个不同的用户喜欢“Swimming”,那么“Swimming”活动应该只作为字符串存储一次。
每个用户都参与了哪些活动。请注意,一个用户可以有多个爱好!
因此,我必须为此目的实现表,如果需要,我还必须对现有表进行任何修改,并实现所需的任何键和外键关系。
所有这些都必须以最少的存储量存储,即,您必须从 MySQL 手册中选择适当的数据类型。您可能会假设新活动会频繁添加,活动几乎不会被删除,并且不同活动的总数可能会达到 100,000。
所以我已经有一个以“user_id”作为主键的“用户”表。
我对此的解决方案:
创建一个名为“Activities”的表,并将“activity_id”作为 PK (mediumint(5)),将“activity”作为存储爱好 (varchar(80)),然后我可以创建另一个名为“Link”的表并使用用户表中的“user_id”外键和“活动”表中的“活动ID”外键向用户显示他们喜欢做的活动。
我对这个问题的处理方法正确吗?还有其他方法可以提高效率吗?
如果一个用户在外键表“链接”中进行不止一项活动,我将如何显示?