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