DATE - дата в формате, определяемом специальной командой (по умолчанию mm/dd/yy); поля даты могут содержать только реальные даты, начинающиеся за несколько тысячелетий до н.э. и ограниченные пятым-десятым тысячелетием н.э.;
DOUBLEPRECISION - для научных вычислений 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 обеспечивает своевременные, устойчиво воспроизводимые результаты для каждого запроса без специального программирования. В результате достигается максимальная пропускная способность для всех пользовательских транзакций.
2. Многопотоковая архитектура
Сервер InterBase добавляет многопотоковую архитектуру к MGA, улучшая производительность и оптимизируя использование системных ресурсов, особенно при большом числе пользователей. Многопотоковая архитектура обеспечивает разделяемый кэш данных, сокращая число дисковых операций ввода-вывода для каждого запроса в приложении. Разделяемый кэш метаданных на сервере сокращает стоимость компиляции для запросов и делает выполнение хранимых процедур и триггеров более эффективным. Статистика по пользователям и по базе данных, хранимая сервером, полезна при диагностике критических точек производительности приложения.
3. Мощная поддержка различных типов данных
Многим приложениям (мультимедиа, научные, интернет – приложения), требуется возможность обработки неструктурированных данных. InterBase является первой реляционной базой данных, удовлетворившей это требование с помощью BLOB. Использование BLOB позволяет сохранять в базе данных аудио-, видео-, графическую и бинарную информацию. В современных приложениях фильтры BLOB используются для сжатия и трансформации данных. Разработка приложений и улучшенная производительность для научных приложений поддерживаются многомерными типами данных InterBase, обеспечивающими хранение до 16 измерений в одном поле базы данных.
4. Сигнализаторы событий
Сигнализаторы событий оповещают «заинтересованные стороны» о специфических измнениях, произошедших в базе данных. Приложение регистрирует интерес к событию и затем ждет без опроса базы данных оповещения о наступлении события. За счет устранения опроса сигнализаторы событий экономят системные ресурсы и обеспечивают масштабируемость приложений.
5. Эффективность использования ресурсов
Компактность ядра InterBase экономит драгоценное дисковое пространство для его последующего использования критически важными бизнес-приложениями. InterBase так же обеспечивает производительность, сравнимую с конкурирующими базами данных, при меньших требованиях к оперативной памяти для дополнительной экономии на стоимости памяти. Развертывание сервера состоит из одного исполняемого файла и представляет собой простой машинный процесс, что упрощает инсталляцию даже заказных приложений.
6. Строгое соблюдение индустриальных стандартов
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 < 'Р';