Автор: Пользователь скрыл имя, 05 Ноября 2011 в 21:54, курсовая работа
Систематическая организация данных и способов их обработки осуществляется в банках данных. Банк данных = база данных + СУБД.
База данных - это некоторая структурированная совокупность данных, описывающая некоторую предметную область решаемых задач.
Элемент описания - наименьшая единица описания в базе данных. Совокупность элементов описания, объединенных отношением принадлежности к одному объекту называется записью.
СОДЕРЖАНИЕ 3
1. ПРОЕКТИРОВАНИЕ БАЗ ДАННЫХ 4
1.1. ОБЩИЕ ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ 4
1.1.1. Основные определения 4
1.1.2. Понятие “Ключ” 4
1.1.3. Понятие «нормализации» 5
1.1.4. Понятие "сущность" и "связь" 5
1.2. ОБЩЕСИСТЕМНЫЙ РАЗДЕЛ 6
1.2.1. Модели данных. 6
1.2.2. Иерархические системы 6
1.2.3. Сетевые системы 7
1.2.4. Реляционная модель данных. 8
1.3. ПРЕДСТАВЛЕНИЕ ДАННЫХ С ПОМОЩЬЮ МОДЕЛИ СУЩНОСТЬ-СВЯЗЬ (ER- МОДЕЛЬ). 9
1.3.1. Нормальные формы ER-схем 9
1.3.2. Получение реляционной схемы из ER-схемы 10
1.4. ПРОЕКТИРОВАНИЕ РЕЛЯЦИОННЫХ БД 11
1.5. НОРМАЛИЗАЦИЯ. 12
2. СПЕЦИАЛЬНАЯ ЧАСТЬ 14
2.1. ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ 14
2.2. ИССЛЕДОВАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ И РАЗРАБОТКА МОДЕЛИ 15
2.3. РЕАЛИЗАЦИЯ МОДЕЛИ 22
3. ЗАКЛЮЧЕНИЕ. 30
4. СПИСОК ЛИТЕРАТУРЫ: 32
Для обеспечения ключей сущностей введём в каждую поле – идентификатор. В результате получим следующую схему модели:
На данной схеме не указан смысл связей, однако поскольку типы и кардинальности связей уже определены. Атрибуты, после которых в скобках указано FK являются внешними ключами.
Теперь перейдём от модели «сущность-связь» к реляционной модели. Для этого, опять же, воспользуемся AllFusion ERWin 4.1, где для этого предусмотрен режим представления модели в виде реляционной физической модели, привязанной к конкретной СУБД (и использующий её особенности). Для работы с физической моделью необходимо перевести все названия сущностей и атрибутов с русского языка на английский, а также указать типы данных атрибутов, поддерживаемые СУБД.
Выберем в качестве СУБД SQL Anywhere, как систему, поддерживающую полностью язык запросов SQL и многие расширения. После перехода на физическую реляционную модель схема будет выглядеть, как показано на рисунке.
Теперь проведём анализ модели на соответствие нормальным формам.
Для полученных отношений не требуется нормализации, так как они соответствуют требованиям, предъявляемым к реляционным отношениям.
Средствами AllFusion ERWin 4.1 можно сгенерировать SQL-код под конкретную базу данных. В это случае код будет таким:
CREATE TABLE partitions (
part_name VARCHAR(40),
id_part INTEGER NOT NULL DEFAULT AUTOINCREMENT,
base_part_number INTEGER,
PRIMARY KEY (id_part)
);
CREATE UNIQUE INDEX XPKpartitions ON partitions
(
id_part ASC
);
CREATE TABLE rubrics (
rubric_name VARCHAR(40),
id_rubric INTEGER NOT NULL DEFAULT AUTOINCREMENT,
id_part INTEGER NOT NULL,
base_rubric_number INTEGER,
PRIMARY KEY (id_rubric, id_part),
FOREIGN KEY (id_part)
);
CREATE UNIQUE INDEX XPKrubrics ON rubrics
(
id_rubric ASC,
id_part ASC
);
CREATE TABLE subrubrics (
subrubric_name VARCHAR(40),
id_subrubric INTEGER NOT NULL DEFAULT AUTOINCREMENT,
id_rubric INTEGER NOT NULL,
id_part INTEGER NOT NULL,
subrubric_number INTEGER,
PRIMARY KEY (id_subrubric, id_rubric, id_part),
FOREIGN KEY (id_rubric, id_part)
ON DELETE RESTRICT
);
CREATE UNIQUE INDEX XPKsubrubrics ON subrubrics
(
id_subrubric ASC,
id_rubric ASC,
id_part ASC
);
CREATE TABLE payment_type (
id_payment_type INTEGER NOT NULL DEFAULT AUTOINCREMENT,
payment_type_name VARCHAR(20),
highlighting_in_text VARCHAR(10),
PRIMARY KEY (id_payment_type)
);
CREATE UNIQUE INDEX XPKpayment_type ON payment_type
(
id_payment_type ASC
);
CREATE TABLE announcement (
announcement_text VARCHAR(4096),
id_announcement INTEGER NOT NULL DEFAULT AUTOINCREMENT,
id_payment_type INTEGER NOT NULL,
id_subrubric INTEGER NOT NULL,
id_rubric INTEGER NOT NULL,
id_part INTEGER NOT NULL,
PRIMARY KEY (id_announcement, id_subrubric, id_rubric, id_part),
FOREIGN KEY (id_subrubric, id_rubric, id_part)
id_rubric, id_part)
FOREIGN KEY (id_payment_type)
id_payment_type)
);
CREATE UNIQUE INDEX XPKannouncement ON announcement
(
id_announcement ASC,
id_subrubric ASC,
id_rubric ASC,
id_part ASC
);
CREATE TABLE issues_types (
id_issue_type INTEGER NOT NULL DEFAULT AUTOINCREMENT,
issue_type_name VARCHAR(20),
PRIMARY KEY (id_issue_type)
);
CREATE UNIQUE INDEX XPKissues_types ON issues_types
(
id_issue_type ASC
);
CREATE TABLE issues (
id_issue INTEGER NOT NULL DEFAULT AUTOINCREMENT,
date DATE,
issue_number INTEGER,
id_issue_type INTEGER NOT NULL,
PRIMARY KEY (id_issue),
FOREIGN KEY (id_issue_type)
);
CREATE UNIQUE INDEX XPKissues ON issues
(
id_issue ASC
);
CREATE TABLE issues_announcement (
id_issue INTEGER NOT NULL,
id_announcement INTEGER NOT NULL,
id_subrubric INTEGER NOT NULL,
id_rubric INTEGER NOT NULL,
id_part INTEGER NOT NULL,
PRIMARY KEY (id_issue, id_announcement, id_subrubric,
id_rubric, id_part),
FOREIGN KEY (id_announcement, id_subrubric, id_rubric, id_part)
id_announcement, id_subrubric, id_rubric, id_part)
FOREIGN KEY (id_issue)
ON DELETE RESTRICT
);
CREATE UNIQUE INDEX XPKissues_announcement ON issues_announcement
(
id_issue ASC,
id_announcement ASC,
id_subrubric ASC,
id_rubric ASC,
id_part ASC
);
CREATE TABLE link_type (
id_link_type INTEGER NOT NULL DEFAULT AUTOINCREMENT,
locking_reason VARCHAR(100),
information_about_time_of_
id_subrubric INTEGER NOT NULL,
id_rubric INTEGER NOT NULL,
id_part INTEGER NOT NULL,
id_announcement INTEGER NOT NULL,
sign_of_official_link_type BIT,
link_type_type INTEGER,
sign_of_lock BIT,
PRIMARY KEY (id_link_type, id_announcement, id_subrubric,
id_rubric, id_part),
FOREIGN KEY (id_announcement, id_subrubric, id_rubric, id_part)
id_announcement, id_subrubric, id_rubric, id_part)
);
CREATE UNIQUE INDEX XPKlink_type ON link_type
(
id_link_type ASC,
id_announcement ASC,
id_subrubric ASC,
id_rubric ASC,
id_part ASC
);
CREATE TABLE phones (
id_phone INTEGER NOT NULL DEFAULT AUTOINCREMENT,
phone_number VARCHAR(22),
id_link_type INTEGER NOT NULL,
id_announcement INTEGER NOT NULL,