База данных для редакции газеты
Курсовая работа, 05 Ноября 2011, автор: пользователь скрыл имя
Описание работы
Систематическая организация данных и способов их обработки осуществляется в банках данных. Банк данных = база данных + СУБД.
База данных - это некоторая структурированная совокупность данных, описывающая некоторую предметную область решаемых задач.
Элемент описания - наименьшая единица описания в базе данных. Совокупность элементов описания, объединенных отношением принадлежности к одному объекту называется записью.
Содержание
СОДЕРЖАНИЕ 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
Работа содержит 1 файл
БД. Курсовик.doc
— 265.00 Кб (Скачать)Для обеспечения ключей сущностей введём в каждую поле – идентификатор. В результате получим следующую схему модели:
На данной схеме не указан смысл связей, однако поскольку типы и кардинальности связей уже определены. Атрибуты, после которых в скобках указано FK являются внешними ключами.
Теперь перейдём от модели «сущность-связь» к реляционной модели. Для этого, опять же, воспользуемся AllFusion ERWin 4.1, где для этого предусмотрен режим представления модели в виде реляционной физической модели, привязанной к конкретной СУБД (и использующий её особенности). Для работы с физической моделью необходимо перевести все названия сущностей и атрибутов с русского языка на английский, а также указать типы данных атрибутов, поддерживаемые СУБД.
Выберем в качестве СУБД SQL Anywhere, как систему, поддерживающую полностью язык запросов SQL и многие расширения. После перехода на физическую реляционную модель схема будет выглядеть, как показано на рисунке.
Теперь проведём анализ модели на соответствие нормальным формам.
- Все таблицы находятся в 1NF, так как все атрибуты атомарные.
- Все таблицы находятся в 2NF, так как они находятся в 1NF и каждый неключевой атрибут в каждой из них функционально полно зависит от ключа этой таблицы.
- Все таблицы находятся в 3NF, так как они находятся в 2NF и каждый неключевой атрибут в каждой из них нетранзитивно зависит от первичного ключа.
- Таблицы находятся в BCNF, так как атрибуты первичного ключа в них не зависят от ключевых атрибутов, и таблицы находятся в 3NF.
- Таблицы находятся в 4NF, так как они находятся в BCNF и в них отсутствуют многозначные зависимости, не являющиеся функциональными.
Для полученных отношений не требуется нормализации, так как они соответствуют требованиям, предъявляемым к реляционным отношениям.
- Реализация модели
Средствами 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,