Дана MySQL БД для хранения анкет и результатов их заполнения.
answer
хранит ответы на вопросы анкет.user_profile
хранит ответы на вопросы профиля пользователя.user
хранит только id для связи user_profile
и answer
.Мне нужно разграничить ответы на вопросы анкет и ответы на вопросы профиля пользователя. Поля в answer
и user_profile
как видно на модели почти идентичны. Я хочу связать user_profile
с user
также как user
связана answer
(many to one). Я хочу избавиться от полей name
, email
, tel
и т.д. из таблицы user
и оставить только id
(PK).
Правильно ли будет использовать таблицу user, в которой будет только primary key (PK) и ничего больше для связи user_profile и answer?
Довольно часто таблица определяет тип данных, а строки в ней значения этого типа. Если в вашей системе есть вырожденный пользователь (у которого есть только id), то логично создать таблицу с единственным столбцом id (по которому будет построен первичный ключ).
В реальных системах таких таблиц обычно не бывает, так как у пользователей находятся какие-нибудь атрибуты типа логина или даты регистрации. Однако, если у пользователя кроме id действительно ничего нет, то использовать такую таблицу можно и нужно.
Непонятно только почему вы ответы на вопросы анкет и ответы на вопросы профилей разделили в разные таблицы. Да ещё и назвали ответы user_profile
. Кажется тут что-то не так.
По идее, ответы это ответы. Чтобы их отличать, надо знать на какие вопросы они были заданы. Чтобы различать вопросы, надо знать, где они были заданы. Соответственно, чтобы разделить ответы по тому на откуда заданные вопросы они были даны, надо сджойнить к ответам вопросы, и места откуда эти вопросы были заданы. Это довольно неудобно и можно денормализовать схему, добавив вопросам столбец тип вопроса, со значениями вопрос анкеты и вопрос профиля (type enum('questionnaire', 'profile') not null
), тогда всё станет немного проще.
Я тут подумал, анкета может переводиться как профиль, а таблицы анкеты в вашей диаграмме нет. Вы точно понимаете, что и как хранится в этой базе? Кажется, что таблица user_profile хранит анкеты, а не ответы.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Можно ли использовать модули Symfony для функционального тестирования вне фреймворка, если да, то где можно почитать, как всё это настроитьИли...
Как проверить, что строка состоит только из пустых или невидимых символов? То есть разрешены любые символы, но строка не может быть, например,...