我的任务是创建仅可通过邀请某些人获得的调查问卷。
调查要求:
1)一个人可以参加一次调查。
2)该调查仅在特定时间段内可用。到时间结束时,无法进行调查。
3)一项调查可能有很多问题。同时,一个问题可以在许多调查中重复使用。
4)调查包含不同类型的问题。例如:用于注释的文本字段,多项选择题以及可能包含多个答案的问题。
5)调查有2种类型:参与和csi。
6)管理员可以编辑问题目录和提供的答案。同样,我需要以更改之前的形式存储用户答案的历史记录。
我正准备为此将来的应用程序创建数据库结构。作为数据库,我使用 PostgreSQL 。
现在我有了下一个结构。首先,这种要求是否正确?我目前的结构在第6款中存在问题。如果管理员更改了用户历史记录中的问题文本,则该问题也会更改。这是不正确的。
QUESTIONS
表格:
CREATE TABLE QUESTIONS(
ID SERIAL PRIMARY KEY,
TEXT TEXT NOT NULL
);
OFFERED_ANSWERS
表格:
CREATE TABLE OFFERED_ANSWERS(
ID SERIAL PRIMARY KEY,
TEXT TEXT NOT NULL
);
SURVEYS
表格:
CREATE TABLE SURVEYS(
ID UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
NAME TEXT NOT NULL,
START_PERIOD TIMESTAMP,
END_PERIOD TIMESTAMP,
SURVEY_TYPE INT REFERENCES SURVEY_TYPE(ID)
);
SURVEYS_TYPES
表格:
CREATE TABLE SURVEYS_TYPES(
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL
);
QUESTIONS_AND_ANSWERS
表格:
CREATE table QUESTIONS_AND_ANSWERS(
ID SERIAL PRIMARY KEY NOT NULL,
SURVEY_ID UUID,
QUESTION_ID INT,
OFFERED_ANSWER_ID INT,
ALTERNATIVE_ANSWER TEXT,
FOREIGN KEY (SURVEY_ID) REFERENCES SURVEYS (ID),
FOREIGN KEY (QUESTION_ID) REFERENCES QUESTIONS (ID),
FOREIGN KEY (OFFERED_ANSWER_ID) REFERENCES OFFERED_ANSWERS (ID)
);
USERS_ANSWERS_HISTORY
表格:
CREATE table USERS_ANSWERS_HISTORY(
ID SERIAL PRIMARY KEY NOT NULL,
SURVEY_ID UUID,
QUESTION_ID INT,
OFFERED_ANSWER_ID INT,
FOREIGN KEY (SURVEY_ID) REFERENCES SURVEYS (ID),
FOREIGN KEY (QUESTION_ID) REFERENCES QUESTIONS (ID),
FOREIGN KEY (OFFERED_ANSWER_ID) REFERENCES OFFERED_ANSWERS (ID)
);
您在此结构中还看到哪些其他问题?