Построение даталогической модели

На этом этапе необходимо установить соответствие между сущностями и характеристиками предметной области и отношениями и атрибутами в InterBase 6.0. Для этого нужно каждой сущности и характеристикам поставить в соответствие набор отношений (таблиц) и их атрибутов (полей).

Ключ – это минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности. Минимальность означает, что исключение из набора любого атрибута не позволяет идентифицировать сущность по оставшимся. Каждая сущность обладает хотя бы одним возможным ключом. Один из них принимается за первичный ключ. При выборе первичного ключа следует отдавать предпочтение несоставным ключам или ключам, составленным из минимального числа атрибутов. Нецелесообразно также использовать ключи с длинными текстовыми значениями (предпочтительнее использовать целочисленные атрибуты). Атрибут или группа атрибутов, которые в рассматриваемой таблице не являются первичным ключом, а в связной таблице – являются, называется внешним ключом.

 

Таблица соответствий названий сущностей.

Сущность

Соответствие

Команда

Team

Члены команды

Ludi

Матчи

Matchi

Тренер

Trener

Чемпионат

Chemp

Работает

Work1

Позиция

Pozitziya

 

Таблица соответствий названий полей.

Атрибуты

Соответствие

Фамилия

Famil

Имя

Imya

Отчество

Otchestvo

Телефон

Tel

Команда 1

Komanda_1

Команда 2

Komanda_2

Очки 1

ochki_1

Очки 2

ochki_2

Время

Vremya

Вид чемпионата

Vid_chemp

Год оснавания

God_osn

Город

Gorod

Страна

Strana

Тренеровочные базы

Basi

Адрес

Adres

Название

Nazvanie

Дата начала

Data_nachala

Дата_конца

Data_konza

 

 

 

Рисунок 2. Даталогическая модель.

 

 

2.3. Создание базы данных.

 

Создание таблиц:

 

Таблица «Чемпионат»:

CREATE TABLE "CHEMP" ("KOD_CHEMP" INTEGER NOT NULL, "VID_CHEMP" VARCHAR(20), "VREMYA" DATE, PRIMARY KEY ("KOD_CHEMP"));

 

Таблица «Члены команды»:

CREATE TABLE "LUDI" ("KOD_CHEL"       INTEGER NOT NULL, "FAMIL" VARCHAR(20), "IMYA" VARCHAR(20), "OTCHESTVO"       VARCHAR(20), "TEL"   VARCHAR(20), "KOD_KOMANDI" INTEGER NOT NULL, "NOMER" INTEGER NOT NULL);

ALTER TABLE "LUDI" ADD FOREIGN KEY ("KOD_KOMANDI") REFERENCES TEAM ("KOD_KOMANDI");

ALTER TABLE "LUDI" ADD FOREIGN KEY ("KOD_KOMANDI") REFERENCES TEAM ("KOD_KOMANDI");

 

Таблица «Матчи»:

CREATE TABLE "MATCHI" ("KOD_K1"      INTEGER NOT NULL, "KOD_K2"     INTEGER, "OCHKI_1" INTEGER, "OCHKI_2"  INTEGER, "KOMANDA_1"      VARCHAR(20), "KOMANDA_2"  VARCHAR(20), "KOD_KOMANDI"   INTEGER NOT NULL, "VREMYA"       DATE, "KOD_CHEMP" INTEGER NOT NULL, PRIMARY KEY ("KOD_KOMANDI", "KOD_CHEMP"));

ALTER TABLE "MATCHI" ADD FOREIGN KEY ("KOD_CHEMP") REFERENCES CHEMP ("KOD_CHEMP");

ALTER TABLE "MATCHI" ADD FOREIGN KEY ("KOD_K1") REFERENCES TEAM ("KOD_KOMANDI");

ALTER TABLE "MATCHI" ADD FOREIGN KEY ("KOD_K2") REFERENCES TEAM ("KOD_KOMANDI");

 

Таблица «Work1»:

CREATE TABLE "WORK1" ("KOD_KOMANDI"     INTEGER NOT NULL, "KOD_TRENERA"       INTEGER NOT NULL, PRIMARY KEY ("KOD_KOMANDI", "KOD_TRENERA"));

 

       Таблица «Команда».

CREATE TABLE "TEAM" ("KOD_KOMANDI" INTEGER NOT NULL, "STRANA" VARCHAR(20), "GOROD" VARCHAR(20), "GOD_OSN"   DATE, "NAZVANIE" VARCHAR(20), PRIMARY KEY ("KOD_KOMANDI"));

 

Таблица «Тренеры».

CREATE TABLE "TRENER" ("KOD_TRENERA"       INTEGER NOT NULL, "FAMIL" VARCHAR(20), "IMYA" VARCHAR(20), "OTCHESTVO" VARCHAR(20), "TEL" VARCHAR(20), "ADRES"  VARCHAR(20), PRIMARY KEY ("KOD_TRENERA"));

 

Таблица «Позиция».

CREATE TABLE "POZITZIYA" ("KOD_POZITZII" INTEGER NOT NULL,

"POZITZIYA"      VARCHAR(20), PRIMARY KEY ("KOD_POZITZII"));

Заполнение БД

 

Таблица «Чемпионат».

 

Таблица «Члены команд».

 

Таблица «Матчи».

 

Таблица «Команда».

 

Таблица «Тренер».

 

Таблица «Work1».

 

Запросы к БД

 

I. Однотабличные запросы:

 

1. Выводит всех футболистов у кого первая буква фамилии находится в промежутке от "А" до "Г":

select famil from ludi where famil >='А' and famil < 'Г';

2. Выводит всех тренеров у кого первая буква фамилии находится в промежутке от "А" до "Р":

select famil from trener where famil >='А' and famil < 'Р';

 

3. Выдает всех игроков команды Локомотив:

select famil, imya, otchestvo from ludi where kod_komandi=1;

 

II. Многотабличные запросы:

 

1.Выводит тренеров каждой команды:

select nazvanie, famil from team, trener, work1 where team.kod_komandi=work1.kod_komandi and work1.kod_trenera=trener.kod_trenera;

 

2. Выводит таблицу игр всех чемпионатов:

select vid_chemp, komanda_1,komanda_2,ochki_1,ochki_1 from chemp, matchi where chemp.kod_chemp=matchi.kod_chemp;

 

3. Выводит футболистов, кто играет в каком клубе:

select famil, nazvanie from ludi, team where team.kod_komandi=ludi.kod_komandi;

………………………………………….

…………………………………………..

 

III. С использованием функций и вычисляемых значений:

 

1. Вычисляет количество играков команды Локомотв:

select count(*) kod_chel from ludi where kod_komandi=1;

 

2. Выводит команду основанную раньше всех:

select min(god_osn) from team;

 

3. Выводит какое количесво матчей сыграла команда Локомотив:

select count(*) from matchi where kod_k1=1 or kod_k2=1;

 

IV. С групповыми операциями

 

1. Выводит количество играков каждой команды:

select nazvanie, count(famil) from ludi, team where team.kod_komandi=ludi.kod_komandi group by nazvanie;

 

2. Выводит сколько игр сыграно в каждом чемпионате:

select vid_chemp, count(kod_chemp) from chemp, matchi where matchi.kod_chemp=chemp.kod_chemp group by vid_chemp;

 

Заключение

В результате выполнения курсового проекта была создана база данных по играм футбольных команд в разных чемпионатах. Были разработаны 10 различных запросов, таких как – однотабличные, многотабличные, запросы с функциями и запросы с групповыми операциями. В курсовом проекте представлены инфологическая и даталогическая модели базы данных. Данная база данных может применяться в букмекерских конторах для быстрого получения данных об играх той или иной команды.

Список использованной литературы

1. МАРТИН ГРУБЕР «Понимание SQL»

2. Э.К. Лецкий «Информационные технологии на железнодорожном транспорте», М.:УМК МПС России, 2000.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: