Форум программистов CodeGuru
20 Июнь 2018, 13:06:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: создание базы данных  (Прочитано 18068 раз)
0 Пользователей и 1 Гость смотрят эту тему.
aurora_87
Новичок
*
Офлайн Офлайн

Сообщений: 6


Просмотр профиля
« : 09 Июнь 2010, 22:23:51 »

Недавно начала изучение баз данных, помогите определить сущности и их атрибуты.
Предметная область следующая:

Работников аэропорта можно подразделить на пилотов, диспетчеров, техников, кассиров, работников службы безопасности, справочной службы и других, которые административно относятся каждый к своему отделу. Каждая из перечисленных категорий работников имеет уникальные атрибуты-характеристики, определяемые профессиональной направленностью. В отделах существует разделение работников на бригады. Отделы возглавляются начальниками, которые представляют собой администрацию аэропорта. В функции администрации входит планирование рейсов, составление расписаний, формирование кадрового состава аэропорта. За каждым самолетом закрепляется бригада пилотов, техников, обслуживающего персонала. Пилоты обязаны проходить каждый год медосмотр, не прошедших медосмотр необходимо перевести на другую работу. Самолет должен своевременно осматриваться техниками и при необходимости ремонтироваться. Подготовка к рейсу включает в себя техническую часть(техосмотр, заправка необходимого количества топлива) и обслуживающую часть(уборка салона, запас продуктов питания и т. п.).
В расписании указывается тип самолета, рейс, дни вылета, время вылета и прилета, маршрут (начальный и конечный пункты назначения, пункт пересадки), стоимость билета. Билеты на авиарейсы можно приобрести заранее или забронировать в авиакассах. Цена билета зависит не только от маршрута, но и от времени вылета (в неудобное время – ночь, раннее утро – цена билета ниже). До отправления рейса, если в этом есть необходимость, билет можно вернуть. Авиарейсы могут быть задержаны из-за погодных условий, технических неполадок, а также могут быть отменены, если не продано меньше установленного минимума билетов.
Авиарейсы можно разделить на следующие категории: внутренние, международные, чартерные, грузоперевозки, специальные рейсы.

Мои сущности:

Представитель администрации
* код
* ФИО начальника
* наименование должности

Отдел
* код
* название отдела
* код представителя администрации

Бригада
* код
* название бригады
* код отдела

Член бригады - супертип
* код
* ФИО работника
* Название профессии
* возраст
* пол
* размер з/п
* код бригады
Делится на подтипы: пилот, техник, прочие сотрудники. Подскажите, какие у этих подтипов могут быть атрибуты

Самолет
* бортовой номер
* код бригады
* техосмотр

Тип самолета
* код
* тип самолета
* бортовой номер

Строка расписания
 какие атрибуты здесь должны быть?

Вылет
* код
* бортовой номер
* код рейса
* время вылета
* время прилета
* маршрут

Тип рейса
* код
* тип рейса

Билет
* номер билета
* код вылета
* код рейса
* цена
* ФИО пассажира

Записан
holdmann
Пользователь
***
Офлайн Офлайн

Сообщений: 262



Просмотр профиля
« Ответ #1 : 17 Июнь 2010, 22:04:56 »

Так замудрено всё у Вас, девушка.   Грустный

мой вариант


таблица Position
id | UNIQUE enum('администратор', 'пилот', 'техник', .... )

таблица Departament
id | название отдела

таблица Wroker
id | position_id | departament_id | Ваши произвольные параметры (фио, адреса, ... )

таблица Airbus
(если один самолет обслуживает только одна бригада, не забываем departament_id)
id | название | несущественные параметры

таблица FlightType
id | Тип рейса (внутренние, международные, чартерные, грузоперевозки, специальные рейсы)

таблица Flight
(самая большая таблица ^_^)
id | departament_id | техосмотр (true or false) | заправка (true or false) | вся подготовка к рейсу | даты | проданные билеты и по списку.


Если честно не осилил весь текст, но прочитав по диагонали спроектировал бы БД в таком ключе.
« Последнее редактирование: 17 Июнь 2010, 22:06:45 от holdmann » Записан

Елси вы хотите купить, продать, отремонтировать автомобиль в Ижевске: Вам сюда =)
(c)holdmann
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #2 : 17 Июнь 2010, 22:12:17 »

Если честно не осилил весь текст

Также не осилил Голливудская улыбка

По теме.

Я бы выделил отдельно сущности типа

Работник
 * ID
 * Класс_ID
 * Отдел_ID
 * Фамилия
 * Имя
 * Отчество
 ...Другие_атрибуты

и

Класс
 * ID
 * Наименование (это как раз пилот, диспетчер, и.т.д.)

В бригаде должен быть начальник.

Бригада
 * ID
 * Отдел_ID
 * Начальник_ID (ссылка на "Работник")
 ...

Бригада_состав
 * ID
 * Бригада_ID
 * Работник_ID

При помощи Бригада_состав можно одного и того же работника пихать в несколько бригад.

Атрибуты работников можно либо совместить все в одной сущности для разных классов. Либо выделить отдельную сущность - "Атрибуты работника" (там будет ID, ID_типа_атрибута, значение) - но тут гимор с типом значения. Либо делать отдельные сущности для атрибутов отдельных типов работников, а в "Работник" будут ID для всех сущностей атрибутов.

Записан

holdmann
Пользователь
***
Офлайн Офлайн

Сообщений: 262



Просмотр профиля
« Ответ #3 : 18 Июнь 2010, 01:16:29 »

При помощи Бригада_состав можно одного и того же работника пихать в несколько бригад.

Если абстрагороваться от мелочей, мне кажется что выборка должна вернуть самолеты которые готовы к вылету. А не запариваться кто и что сделал для того чтобы самолет мог полететь.

Прям как у нас в стране, и постановка задачи такая же.
Записан

Елси вы хотите купить, продать, отремонтировать автомобиль в Ижевске: Вам сюда =)
(c)holdmann
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!