Как удачнее спроектировать базу данных?

делаю небольшой сайтик для нескольких групп в универе. страничка с расписанием, файловый архив, и прочие радости. возник вопрос касательно каждодневного расписания. на страничке каждой группы будет висеть её расписание на завтра (по желанию — на любой день). на данный момент, существует две таблицы, но они пока никак не связаны друг с другом:

subjects (список предметов)
subjId (уникальный номер предмета)
subjName (полное название предмета)

groups (список групп)
groupId (уникальный номер предмета)
subjName (название группы)

необходимо сопоставить каждой отдельно взятой группе список предметов на понедельник\вторник\etc…
знание php и mysql — на начальном уровне. посему, хотел поинтересоваться у гуру, как удачнее спроектировать БД.
  • Вопрос задан
  • 3009 просмотров
Решения вопроса 1
blo
@blo
инженер-программист
ну вроде ничего сложного, таблица будет примерно такая:

timetable{
subjId int
groupId int
day int
startTime time
}

расписание на день для группы:
select * from timetable,subjects where timetable.subjId=subjects.subjId and groupId= and day= order by startTime;
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
@keatis
А как же четные/нечетные недели? Ну, счас нет — потом появятся.
А номер аудитории? А ФИО препода… Ведь этой доп. инфы уже достаточно, чтобы на экзамене по предмету получить 4. :)
Ответ написан
Комментировать
@phasma
сделать one-to-many в таблице с группами.
Ответ написан
@keatis
Погуглите про ER-модель (модель сущность-связь), как раз ваш случай. Можете еще про нормализацию почитать, если с первого захода осилите термины…
Можно нагуглить и что-нибудь поконкретнее, например, это (там, правда, акцесс, но можно поглядеть картинки с моделью).
Ответ написан
conturov
@conturov
Группы мы не трогаем т.к. у группы может быть несколько предметов. Сделаем таблицу:
id (уникальный номер)
id_group (группа)
id_subjects (предмет)
id_day (день недели)
Могут быть и другие поля вроде нижняя/верхняя неделя.
Что-бы добавить группе предмет добавляете в таблицу нужные данные. Выборка простая, выбираем все на нужную дату по нужной группе. Или выбираем все по нужной дате и делаем расписание для всех групп на этот день недели.
Ответ написан
Комментировать
afiskon
@afiskon
Лучше поздно, чем никогда :) eax.me/database-design
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы