Санкт-Петербургский Институт Точной Механики и Оптики (Технический Университет)
Отчёт по построению базы данных Oracle.
Студенты: Лисянский М. Чурилов А.
Группа: 350
Санкт-Петербург, 2001г.
Постановка задачи
Каждый год в разных странах мира проводятся различные соревнования по автоспорту. Внутри автоспорта существует класс кольцевых гонок, когда всё машины одновременно ездят по одной замкнутой трассе. У кольцевых гонок есть два подкласса – кузовные и формульные гонки. В большинстве случаев соревнования, хотя и являются международными, проводятся внутри одной страны (исключение – Формула 1 и 3000). Самые престижные кузовные чемпионаты – DTC, STCC, BTC, а формульные – Формула-1 и Формула-3000.
В различных кольцевых соревнованиях принимают участие огромное количество пилотов (гонщиков) из различных команд. Они выступают на схожих по параметрам, но в целом, различных машинах с разнообразными настройками и наборами компонент – приводом, объёмом двигателя, моделью машины, резиной, мощностью и т.д., построенных в различные года.
Заезды проходят на разных трассах – с разной протяженностью, количеством кругов, местом расположения, количеством поворотов и т.д. На каждой трассе ведется своя летопись рекордов, поставленных различными пилотами в ходе проводимых соревнований.
Для того, чтобы объединить этот огромный поток информации о командах, пилотах, машинах и трассах и была создана данная база данных. Она грамотно группирует и связывает между собой все эти данные, превращаясь в удобный и оперативный источник информации, воспользоваться которым могут огромное количество людей. Это и комиссары – для занесения данных протоколов о соревнованиях и пилотах, и менеджеры команд – для занесения информации о команде, и журналисты – для получения полноценных сведений о ходе чемпионата и его участниках, и, наконец, зрители.
Структура базы данных
champ champ_name champ_country num_race team champ_name team_name titul_sponsor boss_name racer team_name car_num racer_soname racer_name racer_born car team_name car_num car_model vol_eng power transmission tyres build_year results car_num tr_name result_time result_place result_points record car_num tr_name cycle_rec mid_speed truck tr_name champ_name tr_country length rot_num
Примерная форма занесения данных
Фамилия
пилота _____________________________________ Имя
пилота __________________________ Год
рождения 19__ Бортовой
номер машины в чемпионате __
Название
команды _____________________________________ Название
чемпионата _____________ Титульный
спонсор команды ____________________________ Глава
команды ________________________________
Модель
машины ________________________________________ Объём
двигателя ____ см3 Мощность
___ л.с. Привод
___ (fwd/rwd/4wd) Резина
(производитель)______________________________ Год
постройки ____
Данные о пилоте
Данные о команде
Данные о машине
Создание таблицы
create.sql:
CREATE TABLE champ (
champ_name VARCHAR2(4) PRIMARY KEY,
champ_country VARCHAR2(15),
num_race NUMBER(2));
CREATE TABLE team (
champ_name VARCHAR2(4) NOT NULL REFERENCES champ(champ_name),
team_name VARCHAR2(25) PRIMARY KEY,
titul_sponsor VARCHAR(20),
boss_name VARCHAR2(15));
CREATE TABLE racer (
team_name VARCHAR2(25) NOT NULL REFERENCES team(team_name),
car_num NUMBER(2) PRIMARY KEY,
racer_soname VARCHAR2(15),
racer_name VARCHAR2(15),
racer_born NUMBER(4));
CREATE TABLE car (
team_name VARCHAR2(25) NOT NULL REFERENCES team(team_name),
car_num NUMBER(2) NOT NULL REFERENCES racer(car_num),
car_model VARCHAR2(20),
vol_eng NUMBER(4),
power NUMBER(3),
transmission VARCHAR2(4),
tyres VARCHAR2(15),
build_year NUMBER(4));
CREATE TABLE truck (
tr_name VARCHAR2(25) PRIMARY KEY,
champ_name VARCHAR2(4) NOT NULL REFERENCES champ(champ_name),
tr_country VARCHAR(15),
length NUMBER(4),
rot_num NUMBER(2));
CREATE TABLE results (
car_num NUMBER(2) NOT NULL REFERENCES racer(car_num),
tr_name VARCHAR2(25) NOT NULL REFERENCES truck(tr_name),
result_time NUMBER(5),
result_place NUMBER(2),
results_points NUMBER(2));
CREATE TABLE record (
car_num NUMBER(2) NOT NULL REFERENCES racer(car_num),
tr_name VARCHAR2(25) NOT NULL REFERENCES truck(tr_name),
cycle_rec NUMBER(3),
mid_speed NUMBER(3));