LINUX.ORG.RU
ФорумTalks

[задачка для ума][бд] Проектирование

 


0

1

Предлагаю вашему вниманию следующую задачку.

Предположим что нам необходимо написать небольшую базу данных для учёта абитуриентов. У нас есть основная таблица (для простоты), куда мы будем вставлять записи о делах абитуриентов.

Условие:

Абитуриент имеет право подать на бюджетную (и/или) на платную форму обучения. Т.е. в бумажном деле абитуриента может находится сразу 2 заявления. Остальные критерии поступления неважны.

На вскидку можно предложить 2 варианта реализации поля «Форма обучения».

1. Для «Форма обучения» отводится 1 поле. Значения представляются как

   0 -  "не выбрано"
   1 -  "бюджет"
   2 -  "платно"

CREATE TABLE `tb_main` (
   ...
   `edu_form` int,
   ...
);

2. Для каждой формы обучения отводится своё поле, где

   0 - "Нет заявления"
   1 - "Есть заявление"

CREATE TABLE `tb_main` (
   ...
   `ef_budget` int,
   `ef_payment` int,
   ...
);

Аргументируйте, какой вариант выбрали бы вы. Можете предложить свой вариант.


Ответ на: комментарий от guilder

>Также следует учесть что форм обучения много быть не может физически, так как для приёма документов, сверок, зачислений нужна минимум неделя. Поэтому для `dual_mode` подойдёт какой-либо не самый большой int, т.е. в общем случае биты этого поля буду содержать факт наличия заявления на следующий конкурс.

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



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

И, кстати, интересно на чем делается интерфейс пользователя к данным таблицам?

Alex_A_V ★★
()
Ответ на: комментарий от Alex_A_V

php -> html `edu_form` - <select> `dual_mode` - <input type=«checkbox»>

guilder
() автор топика
Ответ на: комментарий от Alex_A_V

> Вот как раз про такие вещи я и говорил. В Исходном посте не указано как будут в дальнейшем использоваться, данные, какие над ними будут совершаться операции.

фактически эта задачка из разрада [code] 12+16 = [/code]

Большинство ответит 28 и только 1 задаст вопрос: «А в какой системе счисления?».

Я специально не указывал некоторые моменты в исходном посте. Хотелось посмотреть сколько человек могу «покрутить» задачу.

guilder
() автор топика
Ответ на: комментарий от guilder

> Большинство ответит 28 и только 1 задаст вопрос: «А в какой системе счисления?».

Я специально не указывал некоторые моменты в исходном посте.

ты не поверишь, но те, кто не задаёт такого вопроса — лучше знают, как делать, чем те, кто задаёт такие вопросы. Потому что когда заказчик приходит с требованиями сделать «сам не знаю что, но чтоб была кнопка, которая что-нибудь делает», то задавать вопросы типа «в какой системе счисления» — бессмысленно, поэтому делает универсальный вариант, который в случае «ой, а мне надо было в шестнадцатеричной» превращается в шестнадцатеричный одним кликом в настройках.

name_no ★★
()
Ответ на: комментарий от name_no

> ты не поверишь, но те, кто не задаёт такого вопроса — лучше знают, как делать, чем те, кто задаёт такие вопросы. Потому что когда заказчик приходит с требованиями сделать «сам не знаю что, но чтоб была кнопка, которая что-нибудь делает», то задавать вопросы типа «в какой системе счисления» — бессмысленно, поэтому делает универсальный вариант, который в случае «ой, а мне надо было в шестнадцатеричной» превращается в шестнадцатеричный одним кликом в настройках.

С точки зрения зарабатывания денег и минимума геморроя - правильно,

Но, у вас заказчик не опирается ни на что, в моей задаче можно опираться на такой документ как «Правила приёма в ВУЗы», и специально ставил задачу про абитуриентов, а не про зайцев и морковку.

guilder
() автор топика
Ответ на: комментарий от guilder

> Но, у вас заказчик не опирается ни на что, в моей задаче можно опираться на такой документ как «Правила приёма в ВУЗы», и специально ставил задачу про абитуриентов, а не про зайцев и морковку.

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

name_no ★★
()
Ответ на: комментарий от name_no

>Сто раз уже видел, что как только начинается «заказчик это планирует использовать только вот так» — так сразу заказчик придумывает тысячу и один способ, как это, оказывается, можно ещё использовать, а когда выясняется, что реализация не позволяет — угадай, кто виноват?

В таком случае необходимо в договоре указывать, что данная программная реализация только для <<поставленная задача>>.

Меня в своё время это спасло.

послезавтра путин реформирует образование

Законы прежде чем вступить в силу публикуются, и вступают в силу через определённое время. Заинтересованные обычно получают проект ещё раньше. Что касается образования, то это довольно большая кормушка - недопустят чтобы в одночасье всё вдруг с головы на ноги.

guilder
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.