数据库设计

标签 database database-design

这是一个一般的数据库问题,与任何特定的数据库或编程语言无关。

我以前做过一些数据库工作,但通常都是能用的。这次我想为 future 做打算。

我有一张表存储备件列表。名称、部件号、位置等。我还需要存储它们适用的设备。

一种方法是在备件表中为每个设备创建一个列。这就是它在当前数据库中的处理方式。一个问题是,如果将来我想添加一个新设备,我必须创建一个新列,但这会使编程更容易。

我的想法是创建一个单独的适用性表。它会存储部件 ID 和设备 ID,如果一个部件适用于多个设备,它将有不止一行。

Parts
-------
ID
Name
Description
Etc...

PartsApplicability
-------
ID
PartID
DeviceID

Devices
------
ID
Name

我的问题是这是否是一种有效的方法,它是否比原始方法更有优势,是否有更好的方法来做到这一点?

感谢您的回答。

最佳答案

我同意 Rex M 的回答,这是标准做法。您可以在 PartsApplicability 表上做的一件事是删除 ID 列,并使 PartID/DeviceID 成为复合主键。这将确保您的部件不能多次关联到同一设备,反之亦然。

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

相关文章:

php - MySQL/Mariadb 进程在前一个进程完成之前不会运行

mysql - 关联数据库或表的最佳方法?

postgresql - 可以属于 postgres 中的一个或另一个表的数据库记录

php - Mysql Foreign key (150 外键约束不正确)

sql - 如何使用 SQL Management Studio 在数据库之间传输所有表?

sql - 如何在 SQL 中连接文件名的一部分?

mysql - 最适合这项工作的 DBMS 是什么?

database-design - 购物车 'Order' 表的订单状态类型的最佳分割是什么?

mysql - 如何设计我的数据库以容纳这些数据

mysql - CONCAT 和 LIMIT 的 SQL 版本