Принципиальным недостатком хранения столбца таким образом является пространство хранения, так как число строк увеличивается.
Вместо столбца символов можно использовать ENUM()
если у вас есть фиксированный набор вариантов, который будет изменяться редко, если вообще когда-либо, и при этом избегать создания дополнительной таблицы параметров религии, для которой у этого есть внешний ключ.Однако, если варианты будут плавными, правила нормализации предпочли бы, чтобы варианты были помещены в их собственную таблицу с внешним ключом в вашей пользовательской таблице.
Существуют и другие преимущества, кроме места хранения, для хранения их в другой таблице.,Изменить их совсем несложно.Чтобы изменить Christian
на Christianity
, вы можете сделать одно изменение в таблице религий, вместо того, чтобы делать потенциально дорогостоящие (если у вас много строк и религия не проиндексирована)
UPDATE users SET religion='Christianity' WHERE religion='Christian'
... вы можете сделать намного проще и дешевле
UPDATE religions SET name='Christianity' WHERE id=123
Конечно, вы также обеспечиваете целостность данных, вводя данные в таблицу религий.Становится невозможным вставить неверное значение, например, с ошибкой Christain
.