Я здесь для того, чтобы разработать схему реляционной базы данных, которая моделирует опрос и пользователей.Каждая категория может иметь один или несколько вопросов.Каждый пользователь может участвовать только один раз в каждой категории и может опрашивать (или нет) ровно один раз по каждому вопросу.Каждый опрос - да, нет или воздержался (без голосования).
Я разработал свою схему с четырьмя таблицами:
users, [userId, IP]
category, [catId, catTitle]
question, [queId, queTitle]
polls [pollId, queId, userId, answer]
лучше или
users, [userId, IP]
category, [catId, catTitle]
question, [queId, queTitle]
polls [pollId, catId, userId]
pollAnswers [pollAndId, queId, pollId, answer]
Я хотел бы знать, какой из них лучше и почему?
по моему мнению, поскольку у меня нет какой-либо дополнительной информации о опросах, я непосредственно пересекаюсь, объединяя пользователей и вопросы с ответом.
Я также делаюнужно выяснить, сколько пользователей воздержалось при a.) вопросе по всей категории b.) конкретной категории c.) конкретном вопросе
У меня есть точка зрения на схему выбора 1:
select U1.*, Q1.*, P2.*, C1.*
from
( users U1,
questions Q1 )
Left outer Join polls P2 on
Q1.queId = P2.queId AND U1.userId = P2.userId
Left Outer Join category C1 on
Q1.catId = C1.catId
Я пытаюсь беспокоиться, используя приведенный выше запрос с перекрестным соединением между пользователями, и вопрос потеряет мою производительность или нет?
Если вторая схема лучше, можете ли вы предложить варианты для моих результатов?