如何在存在相同关系的多个实例的地方保存关联表?

时间:2018-09-21 18:09:24

标签: mysql sql database-design

在一个存储有关计算机和相关硬件信息的数据库中,我想保留计算机中的拉杆记录。每台计算机都有一个序列作为主键。我想创建第三个表,将摇杆与计算机序列相关联。

计算机

+--------+--------+---------+
| serial | brand  |  model  |
+--------+--------+---------+
| abc    | Dell   | 180     |
| def    | Dell   | 720     |
| xyz    | Lenovo | YogaMat |
+--------+--------+---------+

ram_sticks

+--------+--------+------+------+-------+
| ram_id |  DIMM  | Size | DDR  | Speed |
+--------+--------+------+------+-------+
|      1 | DIMM   | 2048 | DDR2 |  6400 |
|      2 | DIMM   | 1024 | DDR2 |  6400 |
|      3 | SODIMM | 2048 | DDR2 |  5300 |
+--------+--------+------+------+-------+

computers_ramsticks

+--------+--------+
| serial | ram_id |
+--------+--------+
| abc    |      1 |
| abc    |      1 |
| xyz    |      3 |
| xyz    |      3 |
+--------+--------+

如何处理相同关系的多个实例?通常,一台计算机可以具有多个相同的内存条。我无法可靠地猜测每台计算机中将有多少个ram插槽。

1 个答案:

答案 0 :(得分:2)

基本上,您有两种选择。如果所有“ ram_id”都相同,则可以将一个计数添加到关联表中。如果记录已经存在,那么您的“插入”将使用on duplicate key update来增加计数。而您的“删除”将减少计数。

我将更可能采用第二种方法。这将为每个RAM ID添加一个单独的行。我会在表格中添加其他列:

  • 自动生成的唯一ID
  • 创建日期(大概是“安装”日期)

也许其他信息也合适,例如广告位。