Предлагаю вашему вниманию следующую задачку.
Предположим что нам необходимо написать небольшую базу данных для учёта абитуриентов. У нас есть основная таблица (для простоты), куда мы будем вставлять записи о делах абитуриентов.
Условие:
Абитуриент имеет право подать на бюджетную (и/или) на платную форму обучения. Т.е. в бумажном деле абитуриента может находится сразу 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,
   ...
);
Аргументируйте, какой вариант выбрали бы вы. Можете предложить свой вариант.












