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

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

4 ответа

Решение

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам