|
|
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Прошу посмотреть и оценить набросок структуры БД .знаю что говн... у меня учебная задача такова: создать БД для автобусной кассы, которая занимается продажей билетов на разные рейсы. - все рейсы из точки "А" см.рис.(некоторые могут иметь промежуточные станции). - направление рейсов это туда и обратно.(или как?) - мне кажется какая-то фигня у меня с датой рейсов(может быть ситуация, что в один день могут пойти по одному направлению несколько рейсов в разное время) нужно чтобы структура БД позволяла в будущем: - получить кол-во оставшихся билетов на любой рейс(т.е. туда и обратно) - потом я точно не знаю куда стоимость билету прикрутить.(на билет даются скидки детям до 10 лет- 20%) для MySQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 21:47 |
|
||
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
С билетом и клиентом какой то косяк. Что мешает прописать атрибуты клиента прямо в билете или напротив в билет id клиета? Рейс смешал в себе места и собственно рейс. Полагаю, должна быть сущнось рейс с атрибутами: маршрут, время, автобус (возможно базовый тариф). И место с атибутами рейс, номер места, №билета (если место продано). Сущность билет должна включать данные о рейсе, месте, цену (возможно с указанием применённых скидок, например, детский или пенсионный), данные о клиенте. Нужен прейскурант. Это набор правил по которым определяется цена места. Обычно прейскуран представляет из себя несколько таблиц и расчётных процедур. Возможно, цена места будет зависеть от маршрута, от времени, от марки автобуса, от социального статуса пасажира и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 00:34 |
|
||
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Имхо очень неправильно хранить в клиенте id билета. Получается отношение 1:1, а должно быть 1:n (один клиент может купить несколько билетов на разные рейсы) Сущность "место" - нужно (правда, в отличие от mcureenab-а я считаю, что нужно хранить "места в автобусе", а не "места в рейсе" - несколько сложнее получить число занятых мест в текущем рейсе, но зато существенно уменьшается дублирование данных). Думаю, что нужно предусмотреть сущность "расписание рейсов" со временем прибытия/отбытия, и в рейсе делать ссылку на элемент расписания. Сущность "стоимость" - имхо не нужна, никакого смысла в ней нет (так же сомнительна полезность сущности "Дата"). Система тарифов - нужна ( ее реализация может быть разной ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 12:20 |
|
||
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за замечания и советы. Сделаю поправки и выложу снова на оценку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 12:36 |
|
||
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Как теперь схема смотрится? mcureenabНужен прейскурант. Это набор правил по которым определяется цена места. Обычно прейскуран представляет из себя несколько таблиц и расчётных процедур. Возможно, цена места будет зависеть от маршрута, от времени, от марки автобуса, от социального статуса пасажира и т.п. - Как это можно реализовать?(Цена места будет зависеть от маршрута и от значения скидки.) - Как быть с промежуточными станциями.(Пример: еду я из Москвы[M] в Питер[П], по маршруту моего следования делаются остановки в разных населенных пунктах. Т.е. из [M] через 1,2,3,4,5,6,7,... до[П]) Опять загвостка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 15:49 |
|
||
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Spenser - Как это можно реализовать?(Цена места будет зависеть от маршрута и от значения скидки.) Имхо. Базовая (без скидок ) стоимость проезда в автобусе зависит от расстояния и базовой цены на 1 км. Т. о. для начала нужны 2 таблицы: - список маршрутов: - описание маршрутов. Список маршрутов (Tab_Marsh); Id_M - идентификатор маршрута; Name_M - название марщрута. например: 1, Москва-Дубна 2, Москва-Егорьевск ... Описание маршрутов (Opis_M). Id_M - идентификатор маршрута; Name_S - название станции; Dl - расстояние от соседней станции Typ - конечная (промежуточная) Например: 1, aaaa1, 0,0 1, bbbb1, 5,1 1, cccc1, 25,1 .... 1, zzzz1, 7,0 2, aaaa2, 0,0 2, bbbb2, 4,1 2, cccc2, 13,1 .... 2, zzzz2, 9,0 Такая таблица позволяет легко менять маршруты (добавляить, удалять станции, делать объезды и т. п.) Тогда базовая стоимость проезда по маршруту, скажем, Москва-Егорьевск от станции gggg2 До станции kkkk2 будет: select sum(dl)*tarif from Opis_M where id_m=2 and Name_s between 'gggg2" and "kkkk2"; Дополнительно должны быть либо отдельные таблицы по всем видам скидок, либо одна общая, но с идентификаторами скидок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 19:04 |
|
||
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
ЮВ Тогда базовая стоимость проезда по маршруту, скажем, Москва-Егорьевск от станции gggg2 До станции kkkk2 будет: select sum(dl)*tarif from Opis_M where id_m=2 and Name_s between 'gggg2" and "kkkk2"; Дополнительно должны быть либо отдельные таблицы по всем видам скидок, либо одна общая, но с идентификаторами скидок. Спасибо. То что надо , но у меня возникли вопросы: - для таблиц (Tab_Marsh) и (Opis_M) один primary key это возможно( или нет). - как теперь эту базовую стоимость связать с билетом?(или еще с чем) - как сделать так, чтобы в "реальном" билете и в рейсе выводилась информация о том маршруте, который описан а таблице (Opis_M)? Т.е. пассажир сел в точке "А"(начало всего маршрута), а вышел в точке "5"(где-нибудь в середине общего маршрута с конечной точкой "В"). Только после решения этих вопросов я смогу нарисовать следующую структурную схему БД (надеюсь, что заключительную). - чуть не забыл, а в запросе: авторselect sum(dl)* tarif from Opis_M where id_m=2 and Name_s between 'gggg2" and "kkkk2"; значение tarif - это какая-то переменная, где она должна описываться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 21:24 |
|
||
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Spenser[ - как теперь эту базовую стоимость связать с билетом?(или еще с чем) Базовая стоимость с билетом явно (по ссылке) никак не связана. Просто она использутся для вычисления стоимости проезда со всеми скидками. Т. е. пусть таблица "Проданные билеты" имеет, например, такую структуру: id - идентификатор билета; date- дата продажи; time -номер рейса или время отправления; n _stan - начальная станция (лучше использовать идентификатор станции из справочника станций); k _stan - конечная станция; summa- стоимость проезда - окончательная (вычисляеится по приведенной в прошлом письме формуле со всеми скидками и заносится в эту таблицу); другие реквизиты (например, льготы, детский билет и т.п). При аннулировании билета запись удаляется. При замене билета (на другой рейс, другую станцию, дату и т. п.) - модифицируется (или создается заново) Spenser - чуть не забыл, а в запросе: авторselect sum(dl)* tarif from Opis_M where id_m=2 and Name_s between 'gggg2" and "kkkk2"; значение tarif - это какая-то переменная, где она должна описываться? Tarif - это коэффициент или значение, используемое в расчетных формулах (типа "стоимость проезда 1 км", "% НДС", "Скидка пенсионерам", детям, мягкий /жесткий автобус и др. коэффициенты). Сказать однозначно, как их лучше хранить, трудно - зависит от многих факторов. Можно в ini-файле программы, можно в одной общей таблице в БД, можно в каждой отдельной таблице. Но только не в исходном тексте программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 14:23 |
|
||
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
SpenserКак теперь схема смотрится? фигня это а не схема... такая корявая не полетит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 16:09 |
|
||
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
BULK INSERT SpenserКак теперь схема смотрится? фигня это а не схема... такая корявая не полетит. если есть предложи свою мне очень нужно, но прошу учесть что база MySQL, а приложение будет к ней делаться PHP. Свой вариант сейчас готовлю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 16:19 |
|
||
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Spenserесли есть предложи свою. я свою уже написал и уже сдал заказчику - года уже четыре как тому :) автопредприятие - пассажирские автобусные перевозки Москва и Подмосковье - Чебоксары и Поволжье ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 16:26 |
|
||
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
BULK INSERT Spenserесли есть предложи свою. я свою уже написал и уже сдал заказчику - года уже четыре как тому :) автопредприятие - пассажирские автобусные перевозки Москва и Подмосковье - Чебоксары и Поволжье А мой заказчик - это я сам, ставящий себе разные задачи для развития(задача учебная). Если что не получается я прошу совета :) Наверно так и приходит опыт со временем. Мне нужно составить схему в общих(основных) чертах, тонкости пускай пишут спецы(испольнители). Тема пока не закрыта... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 16:54 |
|
||
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Что скажите. Мне кажется, что надо объединить таблицы "МЕСТО" и "ПРОДАННЫЕ БИЛЕТЫ". Сущность билет я убрал (что скажите), а вместо как посоветовали добавил "ПРОДАННЫЕ БИЛЕТЫ". авторЕсли я не ошибаюсь, то кол-во оставшихся билетов на рейс можно определить так: с помощью counta получаю кол-во проданных билет на заданный рейс(Х) из таблицы "ПРОДАННЫЕ БИЛЕТЫ", потом из кол-ва мест в автобусе(Y) в таблице "АВТОБУС" --- (X)=Z -количество оставшихся мест. Это провильно или нет? Как быть со связями и с избыточностью данных? Я прошу оценить полностью все таблицу, чтобы тему закрыть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 19:54 |
|
||
|
Помогите пожалуйста
|
|||
|---|---|---|---|
|
#18+
Забыл уточнить что стоимость билета у меня в данном случае получается сразу из таблицы "СПРАВОЧНИК МАРШРУТА" Пример: маршрут (А)-1-2-3-4-5-6-(Б) так вот стоимость билета из А --> [4] или в (Б) сразу задана в таблице "СПРАВОЧНИК МАРШРУТА" в итоге получается у меня так что на промежуточных станциях не продаются билеты. Прошу на выше сказанное обратить внимание(так поставлено задание) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 20:10 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34978699&tid=1544158]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
198ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 527ms |

| 0 / 0 |
