Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подскажите как сделать структуру БД 
:(
    Опции темы
Igor_CH
Дата 12.8.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



Подскажите пожалуйста структуру БД для расписания пар в институте.
5 пар в день
5 курсов
на курсе от 3 до 6 групп
недели делятся на красные и синие.

Как я понимаю 
1 таблица «Преподаватели»
Id  |  name
2 таблица «Предметы»
Id_pr  |  name_pr
3 таблица «Группы, курс»
Id_gr  |  gruppa  |  kurs

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

PM MAIL   Вверх
kuhan
Дата 12.8.2006, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.12.2005

Репутация: нет
Всего: 1



что-то типа этого

таблица "Расписание"
id | day | wek | time | predmet | kurs | gruppa
PM MAIL WWW ICQ   Вверх
rMaveric
Дата 12.8.2006, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 18.7.2003

Репутация: нет
Всего: 6



Правда я скорее добавил бы еще в таблицу столбец "количество часов"


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
Igor_CH
Дата 14.8.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



А как потом сделать выборку? Не совсем понятно как сортировать красную, синею неделю.
Наподобие:

1 пара
Лекция ….

2 пара
Кр. неделя Практика 1
Син. неделя Практика 2

3 пара
Лекция…

PM MAIL   Вверх
skyboy
Дата 14.8.2006, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Igor_CH, давай ты опишешь словами, что за информацию ты заносишь. А то по своему опыту знаю, что структура может быть как очень сложной, так и довольно простой, в зависимости от того, как это организовано в конкретно взятом ВУЗе. Так что рассказывай, что там за "сине-красная" неделя...
PM MAIL   Вверх
kuhan
Дата 14.8.2006, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.12.2005

Репутация: нет
Всего: 1



Цитата(Igor_CH @  14.8.2006,  13:39 Найти цитируемый пост)
А как потом сделать выборку? Не совсем понятно как сортировать красную, синею неделю.Наподобие:1 параЛекция ….2 параКр. неделя Практика 1Син. неделя Практика 23 параЛекция…


Цитата(kuhan @  12.8.2006,  12:40 Найти цитируемый пост)
что-то типа этого
таблица "Расписание"id | day | wek | time | predmet | kurs | gruppa


Код

SELECT * FROM table WHERE kurs=2 AND gruppa=3 ORDER BY day, time, week


ещё глупые вопросы будут?
P.S. писал по памяти, так что могут быть ошибки в синтаксисе, но общая идея такая

PM MAIL WWW ICQ   Вверх
Igor_CH
Дата 14.8.2006, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



kuhan  да ни чего подобного не пойдет так. Так мы выведем за определеную неделю, а недели делятся (красная, синия, в определенные дни). Мне надо вывод все расписания, всех групп, вывод одной группы, вывод одной группы в определенный день (пн, вт, ср,..)
Примерно так:
Код

<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="33%">Время</td>
    <td width="33%">1 группа</td>
    <td width="34%">2 группа</td>
  </tr>
  <tr>
    <td width="33%" rowspan="2">8.00-9.30</td>
    <td width="33%" rowspan="2">Лекция (преподователь)</td>
    <td width="34%" bgcolor="#FF0000">Практика (проподаватель)</td>
  </tr>
  <tr>
    <td width="34%" bgcolor="#6699FF">Лекция (проподаватель)</td>
  </tr>
  <tr>
    <td width="33%" rowspan="2">9.45-11.15</td>
    <td width="33%" bordercolor="#FF0000" bgcolor="#FF0000">
    Практика (проподаватель)</td>
    <td width="34%" rowspan="2">Лекция (проподаватель)</td>
  </tr>
  <tr>
    <td width="33%" bgcolor="#6699FF">Другая практика (проподаватель)</td>
  </tr>
  <tr>
    <td width="33%">11.30-13.00</td>
    <td width="33%">Практика (проподаватель)</td>
    <td width="34%">Практика (проподаватель)</td>
  </tr>
  <tr>
    <td width="33%" rowspan="2">13.15-14.45</td>
    <td width="33%" rowspan="2">Лаборатории (проподаватель)</td>
    <td width="34%" bgcolor="#FF0000">Практика (проподаватель)</td>
  </tr>
  <tr>
    <td width="34%" bgcolor="#6699FF">Лекция (проподаватель)</td>
  </tr>
</table>


И чтоб вбивать в БД было как можно быстрее, т.е не поодельности красную или синию неделю (мне то ладно, но бывший декан с ссума сойдет пока все занесет smile))
PM MAIL   Вверх
ewolf
Дата 17.8.2006, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 2
Всего: 18



Желательно хранить преподавателей и предметы в отдельных таблицах, а в таблице рассписания ссылаться на их id, в форме добавления предмета сделать выпадающий список, позволяющий выбрать нужный предмет и преподавателя.

Вбивать рассписание все равно придется отдельно, так как каждый день может быть и красным и черным - на соответствующей неделе.

Таблицу рассписания, как писали выше можно сделать такой

id | lecturer_id | subject_id | week_type | day | time | group_id

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

Выводить рассписание тоже совсем не сложно, скажем для красной недели (1) рассписание группы с id 4

Код

SELECT * FROM timetable WHERE week = 1 and group_id = 4


Вывод одного дня обеих недель для всех групп

Код

SELECT * FROM timetable WHERE day = 2


ну и т.д.

PS. В качестве дополнительного задания со звездочкой, могу предложить написать скрипт, который, владея информацией о предметах, преподавателях и необходимых предметах в семестре для каждой группы, а также о желаемом совмещение/несовмещение разных преметов, составлял бы рассписание для всего института smile Разумеется, необходимо учесть занятость преподавателей и т.п. ;)

Это сообщение отредактировал(а) ewolf - 17.8.2006, 01:43
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0752 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.