多对多数据库

时间:2016-04-08 13:51:27

标签: sql database database-normalization

我正在尝试创建一个数据库来分析我的服务器的配置。 但我有许多可以在许多服务器上运行的服务(用于故障转移/负载平衡)。此外,同一服务的配置可以从一台服务器更改为另一台服务器,这就是为什么我不能只提供服务表

我尝试使用将它们连接在一起的单个表链接不同的表。我想我在NF3中,但我不是100%肯定。 那是一个" valide"数据库设计? database design

我担心在数据库中查找内容的请求会有点复杂。

谢谢

1 个答案:

答案 0 :(得分:0)

如果您展示了实际的数据库设计,那将会有所帮助。但... 如果在多对多关系中有两个表关联,则需要在它们之间使用表来表示关系。表通常表示现实世界中的实体,外键表示关系。但是在多对多的关系中,你需要一个表来处理这种复杂性。

该表表示并且可以称为ServiceRunningOnServer,它的主键应该是ServiceId(带有Service.Id的外键)和ServerId(带有Server.Id外键)的组合。

对于全面服务的任何设置(不是特定于服务器)是服务实体的属性,因此属于服务表。但是特定于运行的服务器的任何设置都是该服务与该服务器之间关系的属性,因此它属于ServiceRunningOnServer表。

是的,这是一个完全规范化的数据库设计。实际上,它是具有最优化复杂性的设计。意味着其他设计可能会使某些事情变得更容易,但它们也会使其他事情变得更难。最后,在总和中,其他设计会使事情过于复杂。此设计将使数据库中添加,更新,读取和删除数据的总体复杂性降至最低。