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

标签 sql database-design many-to-many

我正在构建一个使用大量多对多关系的数据库。例如,我有零件元素和机器元素,其中每个零件都进入多台机器,每台机器都有许多零件。该数据库的目的是能够输入零件列表并返回仅由该列表中的零件组成的机器列表,反之亦然。我是数据库设计的新手,所以我目前一直在用转换表对这种关系进行建模,如下所示:

创建表机(
machine_id 号码,
machine_name 字符(30)
)

创建表部分(
part_id 编号,
part_name 字符(30)
)

创建表关系(
part_id 编号,
machine_id 号码
)

这似乎是对这种关系建模的一种非常丑陋和幼稚的方式。有没有更好的方法来做到这一点,比如以某种方式在各自表下的单列中存储和更新列表,或者我还没有想到的更好的方法?我试图找到一种方法来做到这一点,最大限度地减少查询时间和后处理强度。

谢谢。

最佳答案

欢迎使用关系数据库。不,没有更好的方法。我建议您稍微好一点地命名您的表; Machine、Part、Machine_Part 或类似的东西,因为您最终可能会得到一堆此类表。

后处理并不是真正的问题,使用 SQL 中的简单 INNER JOIN 或使用 ORM 处理这些关系相当容易。数据库旨在处理这种事情。

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

相关文章:

sql - SQL Server 中的事务管理和临时表

mysql - 将分隔的逗号值插入到sql表中

sql - 如何一次从三个表中返回行?

java - PreparedStatement 在 IN 子句中包含数千个参数

mysql - 如何为列选择优化数据类型 [innodb specific]?

django - 不可散列类型 : 'list' error when trying to add m2m relationships dynamically using post_save in Django

mysql - Wordpress MySQL 查询执行时间太长

sql - 对于 1000 多列且没有连接,我应该使用哪个 DBMS?

java - 多对多查询 查找所有含有 XX 成分的 "recipes"

entity-framework - EF 4.0 - 多对多关系 - 删除问题