Сотрудник создал схему, которая использует столбец ENUM()
для первичного ключа в таблице поиска. Таблица превращает код продукта «FB» в его название «Foo Bar».
Этот первичный ключ затем используется в качестве внешнего ключа в другом месте. И на данный момент ФК это тоже ENUM()
.
Я думаю, что это не очень хорошая идея. Это означает, что для объединения этих двух таблиц у нас будет четыре поиска. Две таблицы плюс две ENUM()
. Я прав?
Я бы предпочел, чтобы FK были CHAR(2)
, чтобы уменьшить количество просмотров. Я также предпочел бы, чтобы PK был также CHAR(2)
, чтобы полностью уменьшить его.
Преимущество ENUM()
s заключается в получении ограничений на значения. Хотелось бы, чтобы было что-то вроде: CHAR(2) ALLOW('FB', 'AB', 'CD')
, которое мы могли бы использовать для столбцов PK и FK.
Что такое:
- Лучшая практика
- Ваши предпочтения
Эта концепция используется и в других местах. Что если значения ENUM()
длиннее? ENUM('Ding, dong, dell', 'Baa baa black sheep')
. Теперь ENUM()
полезен с космической точки зрения. Должен ли я заботиться об этом, только если есть несколько миллионов строк, использующих значения? В этом случае ENUM()
экономит место для хранения.