Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 109
от 03.07.2006, 08:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 309, Экспертов: 40
В номере:Вопросов: 1, Ответов: 1


Вопрос № 47541: Здравствуйте, Уважаемые эксперты!!! Вопрос вообще больше по БАЗА ДАННЫХ, но такой рассылки нет. Есть такие отношения для базы данных: Маршрут: № маршрута, время отправления, направление, тип автобуса. Тип автобуса: марка, кол-во мест...

Вопрос № 47.541
Здравствуйте, Уважаемые эксперты!!!
Вопрос вообще больше по БАЗА ДАННЫХ, но такой рассылки нет.
Есть такие отношения для базы данных:
Маршрут: № маршрута, время отправления, направление, тип автобуса.
Тип автобуса: марка, кол-во мест, характеристика (мягкий, жесткий), стоимость полного и детского билета, регистрационный знак.
Наличие мест: № маршрута, время отправления, продано билетов, кол-во свободных мест.
Касса: № маршрута, время отправления, место, детский или взрослый билет, сумма.
Дык вот загвоздка в отношении "Наличие мест": какой там ключ будет и какая связь с таблицей
"Маршрут", и еще не пойму как вносить изменеия, когда в отношение "Касса" происходит
так сказать продажа билета: связь между "Маршут " и "Наличие мест " будет один к одному или
один ко многим. Мне кажется такое отношение как "Наличе мест" вообще не целесообразно
использовать.
Спасибо.
Отправлен: 28.06.2006, 07:42
Вопрос задал: Korolyov Alexandr (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ayl
Здравствуйте, Korolyov Alexandr!

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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное