В 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 является следующим добрый, а не один к одному. Отношения типа / подтипа могут быть реализованы следующим образом.
отношения один-к-одному возникают, когда каждый представляет ясную, значимую сущность, которая в другом контексте может находиться в каком-то другом отношении и где незначительное изменение требований может изменить мощность отношения. Это произвольно, какие ссылки, так что лучше выбрать один, чтобы быть необязательным и преобразовать один в ноль или один.