В настоящее время я использую MYSQL Workbench для разработки базы данных для компонента Joomla, и я столкнулся с камнем преткновения в дизайне.
Описание проблемы:
Я хочу разрешить администратору создавать поля для внешнего пользователя. Поле должно быть определено администратором с точки зрения типа и длины.
Мой дизайн:
ADMIN_FIELDS (this is the table to store admin defined fields)
id INT
name VARCHAR(45)
type VARCHAR(45)
USER_FIELDS (this is the table to store user information in the fields defined by admin)
id INT
value LONGTEXT
admin_field_id FK_ADMIN_FIELDS
Вопросы:
Поскольку я не знаю длину поля значения, я выбрал LONGTEXT в качестве типа данных. Это может варьироваться от логического до размера LONGTEXT, в зависимости от того, что администратор выбрал в качестве типа данных. Является ли это хорошей техникой проектирования базы данных, учитывая мою проблему? Есть ли способ лучше?
Будет ли снижение производительности, если я использую LONGTEXT для чего-то такого маленького, как логическое значение? В худшем случае, если админ решит сойти с ума с логическими значениями во всех полях своего сайта, и, гипотетически говоря, у него есть миллиард пользователей, которые создают эти значения. Пострадает ли тогда производительность сайта?
Если нет снижения производительности, то зачем нам хранить данные в соответствующем типе данных? Почему бы не использовать LONGTEXT для всего?
Заранее спасибо за ваш ответ.