Как мне сохранить таблицу связей, где существует несколько экземпляров одного и того же отношения? - PullRequest
0 голосов
/ 21 сентября 2018

В базе данных, в которой хранится информация о компьютерах и связанном с ними оборудовании, я хочу вести учет флеш-памяти в компьютере.Каждый компьютер имеет серийный номер в качестве первичного ключа.Я хочу создать третью таблицу, которая связывает флешки памяти с компьютерными сериалами.

Компьютеры

+--------+--------+---------+
| 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 |
+--------+--------+

Как мне обращаться с несколькими экземплярами одних и тех же отношений?Часто бывает, что на одном компьютере может быть несколько одинаковых палочек ОЗУ.Я не могу точно догадаться, сколько слотов памяти будет на каждом компьютере.

1 Ответ

0 голосов
/ 21 сентября 2018

У вас есть два варианта, в основном.Если все ram_id одинаковы, вы можете добавить счетчик в таблицу сопоставлений.Тогда ваша «вставка» будет использовать on duplicate key update для увеличения счетчика, если запись уже существует.И ваше «удаление» уменьшит счет.

Я бы с большей вероятностью выбрал второй подход.Это добавило бы отдельную строку для каждого идентификатора памяти.Я бы включил в таблицу дополнительные столбцы:

  • Автоматически сгенерированный уникальный идентификатор
  • Дата создания (предположительно, дата установки)

И, возможно,другая информация будет уместна, например, слот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...