В SQL / MySQL есть ли причины не помещать отношения один-к-одному в одну таблицу? - PullRequest
5 голосов
/ 29 апреля 2010

Отношение один к одному обычно может храниться в одной таблице. Есть ли причины не хранить их в одной таблице?

Ответы [ 4 ]

4 голосов
/ 29 апреля 2010

Количество и тип столбцов. Существует ограничение на размер столбцов в таблице. Смотрите здесь . Максимум 8 060 байт на строку.

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

Это не только хранение данных, но и концептуальное отличие друг от друга. Например, страна и валюта имеют отношение 1 к 1 (наглядный пример, я знаю, что это не всегда так). Я бы все равно не держал их вместе.

3 голосов
/ 29 апреля 2010

В разделе http://onlamp.com/pub/a/onlamp/2001/03/20/aboutSQL.html

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

Самое важное следующее:

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

1 голос
/ 29 апреля 2010

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

0 голосов
/ 29 апреля 2010

Отношения «один к нулю или один» являются общими и связаны от необязательного к обязательному - пример, приведенный в http://onlamp.com/pub/a/onlamp/2001/03/20/aboutSQL.html, относится к этому типу, а не один к одному. Отношения типа / подтипа могут быть реализованы следующим образом.

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

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