Стоит задача создать анонимный опросник. То есть на почту сотрудников компании отправить ссылку на опросник, но ответы хранить в базе данных (PostgreSQL) анонимно. Каждый сотрудник может пройти опрос лишь один раз. Опрос активен лишь определенный период. Пытаюсь создать правильную структуру опросника в базе данных PostgreSQL. Как именно осуществить эту самую анонимность?
Есть сущность
"Опрос"
. Есть сущность
"Вопрос"
.
Сейчас сделал следующим образом. Один опрос может содержать в себе несколько вопросов. При этом один вопрос может быть использован в нескольких опросах. Здесь все понятно, это связь многое ко многому.
Я правильно понимаю, чтобы осуществить анонимность опрос нужно привязывать к сессии? Как это будет выглядить в рамках структуру БД?
Есть сущность "Вопрос". Таблица выглядит следующим образом:
CREATE TABLE QUESTIONS(
ID SERIAL PRIMARY KEY NOT NULL,
TEXT TEXT NOT NULL
);
Есть сущность "Опрос". Таблица выглядит следующим образом:
CREATE TABLE SURVEYS(
ID UUID PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
NAME VARCHAR NOT NULL,
DESCRIPTION TEXT,
START_PERIOD TIMESTAMP,
END_PERIOD TIMESTAMP,
ACTIVE BOOLEAN NOT NULL
);
Промежуточная таблица для связи многое ко многому.
CREATE TABLE SURVEYS_QUESTIONS(
ID SERIAL,
SURVEY_ID UUID NOT NULL,
QUESTION_ID INT NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (SURVEY_ID) REFERENCES SURVEYS (ID) ON DELETE CASCADE,
FOREIGN KEY (QUESTION_ID) REFERENCES QUESTIONS (ID) ON DELETE CASCADE
);