Я работаю над приложением, использующим инфраструктуру Yii, поэтому его стиль MVC. У меня есть запись типа "человек", которая содержит информацию о членстве. Участники бывают двух типов: взрослые и дети. Что касается детей, НЕКОТОРЫХ из них мы знаем их возраст, и они делятся на возрастные группы. У возрастных групп есть названия (например, «8 и моложе»). Например, у Джона Смита и Джейн Смит двое детей, Джимми Смит и Джейни Смит. Джейни хочет участвовать в футбольной программе, поэтому нам нужно знать ее возраст и поместить ее в возрастную группу. Джимми занимается декоративно-прикладным искусством, поэтому нам не нужно знать его возраст, потому что его программа не разделена по возрасту. И мы не спрашиваем возраст взрослых.
Итак, вопрос: у меня есть несколько вариантов того, как я это храню. Я мог бы:
- поместите поле int agegroup в таблицу лиц и определите значения как значения CONST, когда я определяю модель для людей (и, возможно, имею специальное значение для «неопределенного» - для взрослых. Затем мне нужно написать небольшой код для перевода константное значение для описательных меток.
- поместите поле возрастной группы в таблицу лиц, как указано выше, но также добавьте в базу данных еще одну таблицу со справочными данными. Обеспечьте ссылочную целостность этой новой таблицы. Это поднимает другой вопрос: должен ли я создавать фиктивную запись в справочной таблице для случаев, когда я не знаю/не волнуюсь о возрастной группе, или я должен разрешить нулевые значения в поле возрастной группы таблицы людей?
- другие?
Я знаю, что могу сделать любую из этих работ. Но я бы приветствовал совет о том, какой подход предпочтительнее и почему!