我有两个表,用户表和程序表。现在我只有 5-10 个计划和数以万计的用户,他们可以注册任何一个计划(也可以注册多个计划)。因此,在多对多关系的情况下,我正在考虑创建一个单独的表,例如 link_user_program,来存储用户注册的程序。
但是,如果我有数以万计的用户和只有 10 个程序,那么与仅存储在用户表中注册的程序(可能是逗号分隔的程序)相比,这不会消耗额外的空间并增加查询时间每个程序的 ids 或 bool 列)?
以上两种设计的优缺点是什么,或者有更好的选择吗?如果将来可能会添加新程序(但仍然远远少于用户数量)怎么办?
最佳答案
从OO领域设计角度,推荐使用多对多链接表; 忘记额外的空间,对于查询时间,您可以设置索引来提高性能。
没有链接表,如果以后添加/删除问题会变得困难。
关于mysql - 多(少)对多(实际上太多)关系的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37540967/