Вопрос № 47541: Здравствуйте, Уважаемые эксперты!!!
Вопрос вообще больше по БАЗА ДАННЫХ, но такой рассылки нет.
Есть такие отношения для базы данных:
Маршрут: № маршрута, время отправления, направление, тип автобуса.
Тип автобуса: марка, кол-во мест...
Вопрос № 47.541
Здравствуйте, Уважаемые эксперты!!!
Вопрос вообще больше по БАЗА ДАННЫХ, но такой рассылки нет.
Есть такие отношения для базы данных:
Маршрут: № маршрута, время отправления, направление, тип автобуса.
Тип автобуса: марка, кол-во мест, характеристика (мягкий, жесткий), стоимость полного и детского билета, регистрационный
знак.
Наличие мест: № маршрута, время отправления, продано билетов, кол-во свободных мест.
Касса: № маршрута, время отправления, место, детский или взрослый билет, сумма.
Дык вот загвоздка в отношении "Наличие мест": какой там ключ будет и какая связь с таблицей
"Маршрут", и еще не пойму как вносить изменеия, когда в отношение "Касса" происходит
так сказать продажа билета: связь между "Маршут " и "Наличие мест " будет один к одному или
один ко многим. Мне кажется такое отношение как "Наличе мест" вообще не целесообразно
использовать.
Спасибо.
На самом деле, зависит от того, какой ключ в таблице маршрут. Если №маршрута является PK, т.е. в один день может быть только
один маршрут в данное время в данном направлении (как у поездов), то тогда связь с табл. "Наличие мест" - 1:1 по
№маршрута.
Если же в качестве PK задан №маршрута и время (т.е. в данном направлении в течении дня может быть несколько рейсов с одним
номером маршрута), то тогда связь тоже 1:1, но при этом в качестве FK будет выступать уже связка №маршрута-время отправления.
Кстати, если №маршрута уникален (PK), то в таблицах "Наличие мест" и "Касса" поле "Время отправления"
- лишнее.
На самом деле, в таблицу "Наличие мест" логично добавить еще поле "День". Тогда связь будет уже 1 ко
многим, т.к. таблица "Маршрут" задает общее расписание, а таблица "Наличие мест" должна учитывать конкретный
маршрут в конкретный день.
В кассе также должен учитываться день отправления автобуса.
Тогда, когда в кассе приобретается билет на определенный день и маршрут, то по таблице "Наличие мест" определяется,
есть ли запись по ключу №маршрута-день. Если ее нет, то добавляется новая с количеством мест равным количеству мест в автобусе.
Проверяется, сколько осталось свободных мест. Если места есть, вносится запись в таблицу "Касса", изменяются поля
"Продано билетов" и "Кол-во свободных мест" в таблице "Наличие мест".
На самом деле, таблица "Наличие мест" действительно не нужна. Потому что количество свободных мест определяется
как разность между количеством мест в автобусе (таблица "Тип автобуса" и количеством проданных билетов на данных
маршрут в таблице "Касса".
--------- Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего
требуется немного больше времени
Ответ отправил: Ayl (статус: Академик) Россия, Санкт-Петербург ICQ: 5163321 ---- Ответ отправлен: 28.06.2006, 12:55 Оценка
за ответ: 5 Комментарий оценки: Изменять схемы данных
нельзя- такая беда, но все равно 5.