Mysql DB设计多对多关系
我正在为一家服务提供商设计数据库结构。以下是我到目前为止的情况:Mysql DB设计多对多关系,mysql,sql,database,database-design,Mysql,Sql,Database,Database Design,我正在为一家服务提供商设计数据库结构。以下是我到目前为止的情况: +---------+ +----------+ +-----------------+ +-----------------+ | User | | Order | | OrderItems | | Subscription | +---------+ +----------+ +-----------------+ +-----------------+ | user_id +--
+---------+ +----------+ +-----------------+ +-----------------+
| User | | Order | | OrderItems | | Subscription |
+---------+ +----------+ +-----------------+ +-----------------+
| user_id +--+ order_id +--+ order_id +--+ subscription_id |
+---------+ | user_id | | subscription_id | | user_id |
+----------+ +-----------------+ | service_plan_id |
+--------+--------+
|
+------------------+ +-------------------+ +--------+--------+
| ServiceGroup | | ServicePlanAccess | | ServicePlan |
+------------------+ +-------------------+ +-----------------+
| service_group_id +---+ service_plan_id +---+ service_plan_id |
+------------------+ | service_group_id | +-----------------+
+-------------------+
+--------------------+
| ServicePlanAccess |
+--------------------+
| plan_id | group_id |
+--------------------+
| 1 | 1 |
| 2 | 2 |
| 3 | 1 |
| 3 | 2 |
+--------------------+
二,。这是一个合理的数据库设计,可以改进吗?1)在订阅表中保留用户id。2) 现在,表的定义使得每个订阅都有一个服务计划,该计划可以有一个或多个服务组。如果您希望订阅可以直接访问服务组,而不需要服务计划,则需要多个连接表来将订阅与服务组联系起来。在架构设计中,冗余通常是不好的。这是不好的,因为很容易使两个用户id副本不同步。