Проектирование базы данных

Автор: Пользователь скрыл имя, 09 Ноября 2010 в 20:13, курсовая работа

Краткое описание

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

Оглавление

Введение 3
Инфологическое проектирование 5
Описание предметной области 5
Описание информационных потребностей пользователей 5
Построение инфологической модели 6
Даталогическое проектирование 7
Выбор и характеристика СУБД 7
Построение даталогической модели 9
Создание базы данных 11
Заполнение БД 12
Запросы к БД 14

Заключение 17

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

Файлы: 1 файл

курсач1.doc

— 483.00 Кб (Скачать)

    VARCHAR(n) - символьная строка переменной длины, не превышающей n символов (n>0 и разное в разных СУБД, но не меньше 4096);

    DATE - дата в формате, определяемом специальной командой (по умолчанию mm/dd/yy); поля даты могут содержать только реальные даты, начинающиеся за несколько тысячелетий до н.э. и ограниченные пятым-десятым тысячелетием н.э.;

    DOUBLE PRECISION - для научных вычислений 15 цифр точности.

    NUMERIC (p.s) - численные значения содержат цифры от 0 до 9 и необязательные знак и десятичную точку.

          Поэтому при проектировании БД выбор остановился на СУБД InterBase 6.0, как СУБД поддерживающей все основные выше перечисленные функции. Помимо этого InterBase 6.0 имеет следующие характеристики:

  1. Повышенная производительность за счет развитой архитектуры

    Сервер InterBase реализует архитектуру множественных  поколений записей (MGA - Multi-Generational Architecture). MGA обеспечивает уникальные возможности использования версий, что ведет к высокой степени доступности данных как для пользователей, работающих с транзакциями, так и для пользователей, использующих приложения поддержки принятия решений. Механизм MGA в InterBase хорошо работает при оперативной обработке коротких транзакций (OLTP - On-Line Transaction Processing) и является уникальным для крупномасштабных реальных приложений, превосходя другие базы данных в области параллельного исполнения длительных транзакций для поддержки принятия решений. Механизм версий устраняет необходимость блокировки записей, к которым осуществляется доступ по чтению во время транзакции, делая их свободными от конфликтов доступа – доступ по чтению никогда не блокирует доступ по записи. В отличие от других баз данных, InterBase обеспечивает своевременные, устойчиво воспроизводимые результаты для каждого запроса без специального программирования. В результате достигается максимальная пропускная способность для всех пользовательских транзакций.

  1. Многопотоковая архитектура

    Сервер InterBase добавляет многопотоковую архитектуру к MGA, улучшая производительность и оптимизируя использование системных ресурсов, особенно при большом числе пользователей. Многопотоковая архитектура обеспечивает разделяемый кэш данных, сокращая число дисковых операций ввода-вывода для каждого запроса в приложении. Разделяемый кэш метаданных на сервере сокращает стоимость компиляции для запросов и делает выполнение хранимых процедур и триггеров более эффективным. Статистика по пользователям и по базе данных, хранимая сервером, полезна при диагностике критических точек производительности приложения.

  1. Мощная поддержка различных типов данных

    Многим  приложениям (мультимедиа, научные, интернет – приложения), требуется возможность  обработки неструктурированных  данных. InterBase является первой реляционной базой данных, удовлетворившей это требование с помощью BLOB. Использование BLOB позволяет сохранять в базе данных аудио-, видео-, графическую и бинарную информацию. В современных приложениях фильтры BLOB используются для сжатия и трансформации данных. Разработка приложений и улучшенная производительность для научных приложений поддерживаются многомерными типами данных InterBase, обеспечивающими хранение до 16 измерений в одном поле базы данных.

  1. Сигнализаторы событий

    Сигнализаторы событий оповещают «заинтересованные стороны» о специфических измнениях, произошедших в базе данных. Приложение регистрирует интерес к событию и затем ждет без опроса базы данных оповещения о наступлении события. За счет устранения опроса сигнализаторы событий экономят системные ресурсы и обеспечивают масштабируемость приложений.

  1. Эффективность использования ресурсов

    Компактность  ядра InterBase экономит драгоценное дисковое пространство для его последующего использования критически важными  бизнес-приложениями. InterBase так же обеспечивает производительность, сравнимую с конкурирующими базами данных, при меньших требованиях к оперативной памяти для дополнительной экономии на стоимости памяти. Развертывание сервера состоит из одного исполняемого файла и представляет собой простой машинный процесс, что упрощает инсталляцию даже заказных приложений.

  1. Строгое соблюдение индустриальных стандартов

    InterBase придерживается строгого соответствия  индустриальным стандартам для  клиент-серверных вычислительных  сред, таким как ANSI/SQL, Java, UNICODE и XDR (External Data Representation – внешнее представление данных). Наша приверженность критически важным технологическим стандартам означает, что вы можете сократить время, необходимое для разработки, внедрения и сопровождения ваших приложений на множестве платформ с гарантией немедленного достижения наивысшей производительности.

 

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

    На  этом этапе необходимо установить соответствие между сущностями и характеристиками предметной области и отношениями  и атрибутами в 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")); 
 
 
 
 
 
 

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

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

 

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

 

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

 

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

 

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

 
 
 
 
 
 
 

Таблица «Work1».

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

2.5. Запросы к БД 

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. Выводит команду основанную раньше всех:

Информация о работе Проектирование базы данных