sql - 多对多关系数据库设计

标签 sql foreign-keys schema entity-relationship

我有一个名为config 的表。每个 config 行都有一个 services 列表与之相关联。 总共有 10 个特定的服务可用。

我应该如何设计架构? config 架构已经存在。 这是我的想法,但不确定是否正确。

config
===================
config_id primary key  
col-1  
col-2  
...  
col-n

我打算引入一个新表。

serviceconfigmap 
======================================== 
config-id # foreign key to config table  
svc_id    # service identifier

这种方法的问题在于,serviceconfigmap 表将为每个 config-id

复制 svc_id

这是正确的方法吗?欢迎任何更好的想法

========================================

编辑

我知道我错误地将我的要求称为一对多而不是多对多。编辑了我的问题。

每个配置可以有多个服务,相同的服务可以在不同的配置之间共享。

最佳答案

您正在设计多对多关系,因为配置有很多服务,而服务可以包含在不同的配置中。

为此,您需要三个表,ConfigServiceMappingTable

Config
=========
Config_ID         => unique
Config_Name
.....

Service
=========
Service_ID        => unique
Service_Name
.....

ConfigServiceMap
==================
Config_ID         
Service_ID
.....

关于sql - 多对多关系数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12812620/

相关文章:

php - mySQL 数据库 - 存储多标准评级

mysql - 如何使用条件连接优化查询?

sql - 外键减慢删除

ruby-on-rails - 如何在我的装置中加载带有外键的 HABTM 关系?

php - 一次播种多行 laravel 5

php - fatal error PHP,Pear?

sql - 无法在 Postgres 交叉表查询中使用公用表表达式

php - 设置外键只显示用户信息

database - 改变模式生成器中的列长度?

c# - 单个 schema.ini 定义可以覆盖多个文件吗