mysql - 多(少)对多(实际上太多)关系的数据库设计

标签 mysql sql database database-design

我有两个表,用户表和程序表。现在我只有 5-10 个计划和数以万计的用户,他们可以注册任何一个计划(也可以注册多个计划)。因此,在多对多关系的情况下,我正在考虑创建一个单独的表,例如 link_user_program,来存储用户注册的程序。

但是,如果我有数以万计的用户和只有 10 个程序,那么与仅存储在用户表中注册的程序(可能是逗号分隔的程序)相比,这不会消耗额外的空间并增加查询时间每个程序的 ids 或 bool 列)?

以上两种设计的优缺点是什么,或者有更好的选择吗?如果将来可能会添加新程序(但仍然远远少于用户数量)怎么办?

最佳答案

从OO领域设计角度,推荐使用多对多链接表; 忘记额外的空间,对于查询时间,您可以设置索引来提高性能。

没有链接表,如果以后添加/删除问题会变得困难。

关于mysql - 多(少)对多(实际上太多)关系的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37540967/

相关文章:

mysql - 如何使用外键将不同表的多值属性存储在一张表中?

mysql - Wordpress 超慢服务器响应 11GB Wordpress 数据库

php - 在子字符串上使用 DISTINCT() 对 MySQL 中电子邮件数据库中的域进行分组

php - 处理php而不刷新页面

MySQL 5.5 Create 事件给出语法错误

mysql - 这些 SQL 查询是否相同 - 如果不同,有什么区别

mysql - 使用 CMD 导入 SQL 数据库 - 唯一访问被拒绝错误

mysql - 如何将 PostgreSQL 数据库中的所有 SMALLINT 列转换为 BOOLEAN?

mysql - 差距检测 - 识别跳过/错过的日期

java - ResultSet.get 抛出 java.sql.SQLException : Invalid operation at current cursor position