База данных для редакции газеты

Автор: Пользователь скрыл имя, 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

Работа содержит 1 файл

БД. Курсовик.doc

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

      Для обеспечения ключей сущностей  введём в каждую поле – идентификатор. В результате получим следующую схему модели:

     На  данной схеме не указан смысл связей, однако поскольку типы и кардинальности связей уже определены. Атрибуты, после которых в скобках указано FK являются внешними ключами.

     Теперь  перейдём от модели «сущность-связь» к  реляционной модели. Для этого, опять же, воспользуемся AllFusion ERWin 4.1, где для этого предусмотрен режим представления модели в виде реляционной физической модели, привязанной к конкретной СУБД (и использующий её особенности). Для работы с физической моделью необходимо перевести все названия сущностей и атрибутов с русского языка на английский, а также указать типы данных атрибутов, поддерживаемые СУБД.

      Выберем в качестве СУБД SQL Anywhere, как систему, поддерживающую полностью язык запросов SQL и многие расширения. После перехода на физическую реляционную модель схема будет выглядеть, как показано на рисунке.

     Теперь  проведём анализ модели на соответствие нормальным формам.

  1. Все таблицы находятся в 1NF, так как все атрибуты атомарные.
  2. Все таблицы находятся в 2NF, так как они находятся в 1NF и каждый неключевой атрибут в каждой из них функционально полно зависит от ключа этой таблицы.
  3. Все таблицы находятся в 3NF, так как они находятся в 2NF и каждый неключевой атрибут в каждой из них нетранзитивно зависит от первичного ключа.
  4. Таблицы находятся в BCNF, так как атрибуты первичного ключа в них не зависят от ключевых атрибутов, и таблицы находятся в 3NF.
  5. Таблицы находятся в 4NF, так как они находятся в BCNF и в них отсутствуют многозначные зависимости, не являющиеся функциональными.

     Для полученных отношений не требуется  нормализации, так как они соответствуют  требованиям, предъявляемым к реляционным  отношениям.

    1. Реализация  модели

     Средствами  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)

                                  REFERENCES partitions  (id_part)

                                  ON DELETE RESTRICT

                                  ON UPDATE RESTRICT

     ); 

     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)

                                  REFERENCES rubrics  (id_rubric, id_part)

                                  ON DELETE RESTRICT

                                  ON UPDATE 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)

                                  REFERENCES subrubrics  (id_subrubric,

                   id_rubric, id_part)

                                  ON DELETE RESTRICT

                                  ON UPDATE RESTRICT,

            FOREIGN KEY (id_payment_type)

                                  REFERENCES payment_type  (

                   id_payment_type)

                                  ON DELETE RESTRICT

                                  ON UPDATE RESTRICT

     ); 

     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)

                                  REFERENCES issues_types  (id_issue_type)

                                  ON DELETE RESTRICT

                                  ON UPDATE RESTRICT

     ); 

     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)

                                  REFERENCES announcement  (

                   id_announcement, id_subrubric, id_rubric, id_part)

                                  ON DELETE CASCADE

                                  ON UPDATE CASCADE,

            FOREIGN KEY (id_issue)

                                  REFERENCES issues  (id_issue)

                                  ON DELETE RESTRICT

                                  ON UPDATE 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_contacts VARCHAR(100),

            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)

                                  REFERENCES announcement  (

                   id_announcement, id_subrubric, id_rubric, id_part)

                                  ON DELETE RESTRICT

                                  ON UPDATE RESTRICT

     ); 

     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,

Информация о работе База данных для редакции газеты