Дизайн базы данных для катания с переменным количеством кандидатов - PullRequest
0 голосов
/ 27 ноября 2018

Итак, у меня есть стол для катания и стол для кандидатов.В каждой гонке может участвовать до 12 кандидатов, и каждый кандидат имеет свой индивидуальный результат.Кроме того, у меня есть таблица разделов опроса, которая похожа на таблицу результатов, за исключением того, что несколько сотен отделений обычно используют один и тот же набор кандидатов.

У меня проблемы с созданием дизайна базы данных.В настоящее время у меня есть 2 столбца для каждого кандидата, один из которых хранит идентификатор в таблице кандидатов, а другой - результат.Таблица результатов выглядит следующим образом:

(riding_id INTEGER, name TEXT, cand0_id INTEGER, cand0_result INTEGER ... cand11_id INTEGER, cand11_result INTEGER)

Таблица распределения опросов похожа.

Таблица кандидатов выглядит следующим образом:

(cand_id INTEGER, riding_id INTEGER, name TEXT)

Если список участников или опросимеет менее 12 кандидатов, тогда этот набор столбцов пуст.Однако с этим неудобно работать, поскольку требуются массивные запросы для получения каждого нужного мне столбца и гигантское соединение в таблице кандидатов.

Если бы у меня были только поездки, я мог бы просто использовать идентификатор поездки втаблица кандидатов для отношения, но есть также несколько сотен разделов опроса, с которыми также связан кандидат, что означает, что я снова столкнулся с проблемой «тонны столбцов», если я хочу сделать то же самое с подразделениями опроса.

Есть ли разумный способ выложить мои данные?

1 Ответ

0 голосов
/ 27 ноября 2018

Вы определенно хотите поддерживать категоричный дизайн и избегать желания иметь дизайн, который имеет «поперечные» столбцы.Ваш дизайн должен включать представления, которые сводят данные в другие формы макета, необходимые для отчетности.

На основе вашего вопроса и предположений об управлении опросами

candidates
----------
candidate_id
name
affiliation_id
etc...

ridings
-------
riding_id
name
etc...

riding_candidates
-----------------
riding_candidate_id
riding_id
candidiate_id
result

polling_divisions
-----------------
polling_division_id
name
etc...

polling_division_candidates
---------------------------
polling_division_candidate_id
polling_division_id
candidate_id
detail... (specific to division+candidate combination)
etc...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...