Я работаю над несколькими таблицами ссылок, и я подумал (Danger Will Robinson, Danger), каковы возможные структуры таблицы ссылок и каковы их про и con.
Я придумал несколько возможных ограничений для таблицы ссылок:
Традиционная модель с тремя колонками
- id - автоматический номер PRIMARY
- table1fk - внешний ключ
- table2fk - внешний ключ
Это классика, в большинстве книг, - сказал Нуфф.
Индексированная 3-х столбчатая модель
- id - автоматический номер PRIMARY
- table1fk - внешний ключ
INDEX ('table1fk')
- table2fk - внешний ключ
INDEX ('table2fk')
В моем собственном опыте поля, которые вы запрашиваете, не индексируются в традиционной модели. Я обнаружил, что индексирование полей внешнего ключа повышает производительность, как и следовало ожидать. Не существенное изменение, а хорошая оптимизация.
Составной ключ 2 столбца ADD PRIMARY KEY ('table1fk' , 'table2fk')
- table1fk - внешний ключ
- table2fk - внешний ключ
С этим я использую составной ключ, так что запись из таблицы 1 может быть связана только с записью на таблице2 один раз. Поскольку ключ является составным, я могу добавить записи (1,1), (1,2), (2,2) без ошибок дублирования.
Возможны ли какие-либо потенциальные проблемы с опцией составного ключа 2 столбца? Есть ли проблема с индексацией, которая может возникнуть? Выиграла производительность? Все, что могло бы дисквалифицировать это как возможный вариант?