多对多数据库

many-to-many database

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


我尝试 link 使用一个 table 将不同的 table 连接在一起。我想我在 NF3,但我不是 100% 确定。 那是 "valide" 数据库设计吗? database design


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

谢谢

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

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

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

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