![]() |
|
Модераторы: Akella |
![]()
|
|
| Deee |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 28.11.2008 Репутация: нет Всего: нет |
Здравствуйте! Делаю базу данных и клиентское приложение к ней. (InterBase 6.0, клиентское приложение пишу на delphi 7.0)
тема железнодорожная касса. Есть таблица со всеми станциями железной дороги. Выбирается две станции (отправления и назначения) нужно сделать так чтобы можно было увидеть время отправления и прибытия поезда в таблице "маршрут". Для простоты и наглядности, время движения поезда по всей железной дороге разделим на количество станций и получим одинаковые промежутки времени между станциями. Требуется, зная время отправления поезда от самой первой станции железной дороги определить время отправления с выбранной станции и время прибытия на выбранную станцию. т.е. время отправления и прибытия на конкретном участке железной дороги (маршруте), и еще время в пути. Вот скрин базы заранее спасибо! |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
Неужели Firebird 2.0 нельзя использовать? Почему? Добавлено через 3 минуты и 3 секунды А проблема-то в чём? В чём вопрос? Ты не умеешь вычитать средствами сервера? Это же задачки для второго или третьего класса? Из пункта А в пункт Б вышел поезд...... Добавлено через 4 минуты и 14 секунд Время прибытия на станцию = время отправления + время в пути Добавлено через 4 минуты и 54 секунды Время отправления со станции = время отправления с начальной станции + время в пути + время на стоянку |
|||
|
||||
| Deee |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 28.11.2008 Репутация: нет Всего: нет |
Akella, у меня InterBase стоит на университетской машине, поэтому я и работаю в нем...
получается, что нужно в таблице "станции" завести столбец время?? а как правильно сложить значения определенного диапазона полей?? создать процедуру? |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
а так?
Добавлено через 1 минуту и 17 секунд Не знаю, наверное, я в структуру базы сильно не вникал. |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
еще покажи связи между таблицами
PS: Deee, это реальная работа или диплом/курсач? -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Deee |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 28.11.2008 Репутация: нет Всего: нет |
Deniz, а как в InterBase связи показать? я не разобрался...
это не диплом\курсач, это просто мой пример базы данных на зачет по информатике) (все делал абсолютно сам) |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
а что, есть разница? Добавлено через 1 минуту и 34 секунды Наверное, Deniz имел ввиду, что нам покажи, т.е. нарисуй в паинте стрелочками. Чтобы было видно, по каким полям связаны таблицы, если они связаны. |
|||
|
||||
| Deee |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 28.11.2008 Репутация: нет Всего: нет |
Akella, ну обычно диплом и курсовая это достаточно серьезные и объемные работы...
вот показал связи ... вроде бы так. только у меня есть еще 2 таблицы с одинаковыми данными (станции отправления и станции назначения). отличаются только названиями и ключевыми полями, соответственно из таблицы маршрут поля "отправление" и "назначение" будут связаны с ключевыми полями соответствующих таблиц (на картинке для наглядности показал, что они связаны по ключу "NS") |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
Deee, а почему ты не хочешь использовать IBExpert? Там и построитель диаграмм есть.
Добавлено через 3 минуты и 52 секунды
На нашёл время отправления поезда. В какой таблице, в каком поле? Добавлено через 6 минут и 5 секунд мне кажется, что тебе нужно переделать структуру. По крайне мере я не вижу ни одного поля типа Time Добавлено через 14 минут и 13 секунд В итоге у тебя должна получится таблица в виде цепочки записей: |
|||
|
||||
| Deee |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 28.11.2008 Репутация: нет Всего: нет |
Akella, спасибо попробую!
а как сделать так, чтобы когда время отправления и прибытия и другая информация выведены на сетку (DBGrid), при нажатии на кнопку "поезд опаздывает" бралось значение из edit(mask edit или другого компанента) и прибавлялось к значению времени прибытия (время прибытия+задержка)... а потом соответственно при все возвращалось на круги своя?? |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
InterBase тут не причем.
Для показа можно в Access сделать структуру БД и там есть возможность показать эту структуру или можно показать скрипт создания БД. Судя по рисунку, базу нужно нормализовать. Например, связь(если она есть) "Железные дороги" - "Маршруты" не нужна. Таблицу "Маршруты" можно реализовать в 2-х вариантах: 1. Как показал Akella. Минусы: трудное редактирование маршрута (добавить/удалить станцию для добавления 1 insert + 2 update) Плюсы: наглядность, легкость в написании SQL запросов 2. Примерно так же, как рисуют в поездах. "Станция" "Время прибытия" "Время отправления" Плюсы: легче редактировать маршрут, легче учитывать опоздание поезда (отслеживать прохождение по маршруту) Минусы: сложности(одним SQL запросом) с разными вычислениями PS: для зачета думаю сильно углубляться не стоит. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
Deee, сначала построй правильную базу, а затем уже...
Добавлено @ 08:43 Deniz у меня это не структура исходной таблицы, а не готовый результат после (как бы) выполнения SQL запроса. Такой результат просто нагляднее хотя бы, чем у автора. Видно хотя бы время Добавлено @ 08:43 Да и вообще нужно поле не время, а дата + время (timestamp) Это сообщение отредактировал(а) Akella - 27.5.2009, 08:44 |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
а вот здесь не согласен.
Для шаблона нужно время без даты, потому как поезда могут ходить например так: каждую пятницу отправление в 14:00 каждый вторник отправление в 12:00 -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
Deniz, смотря в какой таблице. Если в таблице поездов, то да, нужно только время. И можно ещё одно поле текстовое, где будет хранится что-то типа расписания: "1010100". Это значит, что поезд отправляется: пн, ср, пт, то есть 1 - это отправляется, а 0 - это не отправляется. Семь чисел = семь дней недели. Можно расписание сделать в виде текстового поля, где хранить список дат отправки через запятую.
|
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Akella, вариант "1010100" тоже не очень хороший. Был печальный опыт(авиаперевозки) и пришлось переделывать.
Шаблон может выглядеть так: Дата начала Дата конца ИД поезда Статус integer Дни integer + вспомогательные поля Поле статус самое сложное: 0 - разовый переезд, без периода 1 - в поле "Дни" указан период, через которые происходит движение, например "Дни" = 14 следовательно 1 раз в две недели 2 - в поле "Дни" указана номер дня месяца, по которым происходит движение, например "Дни" = 14 следовательно каждой 14 число месяца PS: Это так, остатки горького опыта, может кому пригодится. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
![]()
|
| Правила форума "Interbase" | |
|
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |