Проблема проектирования базы данных: промежуточная таблица между двумя таблицами может привести к слишком большому количеству результатов - PullRequest
0 голосов
/ 15 апреля 2010

Я должен создать базу данных для обработки форм.

В основном, форма должна проходить (ровно) 7 человек, один за другим. Каждый человек может либо согласиться, либо отклонить форму.
Если кто-то отказывается, цепочка останавливается, и следующие люди даже не получают уведомления, что является формой.

Прямо сейчас я думал об этих трех таблицах: ФОРМА, ЧЕЛОВЕК и ОТВЕТ. Однако мое первое решение звучит слишком тяжело, потому что каждая форма может иметь до 7 ответов.

v1
Здесь мы с таблицей между ними. Это означает, что каждая успешная форма имеет 7 строк в таблице RESPONSE.

v2
Здесь у нас есть ответная информация непосредственно внутри формы. Это выглядит некрасиво, но, по крайней мере, сохраняет все как можно более необычным. С другой стороны, я не могу отслеживать даты ответов, но я не думаю, что это имеет решающее значение.

Что вы думаете по этому поводу? Я чувствую, что они оба не правы, и я не знаю, как это исправить.
Если это имеет значение, я буду использовать Oracle 9.

Ответы [ 2 ]

3 голосов
/ 15 апреля 2010

Из двух я бы рекомендовал первый вариант, так как он был бы более гибким в случае изменения бизнес-процесса и потребовал бы (скажем) 9 ответов

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

2 голосов
/ 15 апреля 2010

Первое решение кажется лучше. Затем вы можете проверить, не отклонен ли он кем-то, выполнив простой SQL: ... WHERE response.isapproved = False. В противном случае вам нужно проверить все 7 полей в основной таблице.

...