Должна ли быть отдельная таблица при отображении отношения один ко многим? - PullRequest
6 голосов
/ 01 августа 2011

С точки зрения производительности и масштабируемости, какой из них был бы лучшим способом сделать одно-много отображений в MySQL.

  • Используя отдельный столбец, но придерживаясь 2 таблиц:

    (человек): идентификатор, имя

    (телефон): id, номер, тип, person_id

  • Использование отдельной таблицы:

    (персона): id, имя

    (телефон): id, номер, тип

    (person_phone): id, person_id, phone_id

Ответы [ 3 ]

14 голосов
/ 01 августа 2011

На этот вопрос есть только один правильный ответ, и это первый ответ.

Вторая из ваших идей - это то, как вы моделируете отношения «многие ко многим», а не «один ко многим».

5 голосов
/ 01 августа 2011

Первый лучше.

  1. Лучшая производительность.
  2. Меньше места для хранения.
  3. Легко понять.

P.S. Может быть, вам даже не нужен id для телефона, достаточно (number, type, person_id).

5 голосов
/ 01 августа 2011

С точки зрения производительности всегда дешевле избегать объединений, которые добавляют кратность количеству запрашиваемых строк.

До тех пор, пока один сотрудник будет использовать только один телефон (истинный один-ко-многим), первый вариант будет лучшим.

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