Базы данных

Автор работы: Пользователь скрыл имя, 24 Октября 2013 в 19:44, курсовая работа

Описание работы

Базы данных (далее БД) — это совокупность структур, предназначенных для хранения больших объемов информации и программных модулей, осуществляющих управление данными, их выборку, сортировку и другие подобные действия. Информация базы данных хранится в одной или нескольких таблицах. Любая таблица с данными состоит из набора однотипных записей, расположенных друг за другом. Они представляют собой строки таблицы, которые можно добавлять, удалять или изменять. Каждая запись является набором именованных полей, или ячеек, которые могут хранить самую разнообразную информацию, начиная от даты рождения и заканчивая подробным описанием кулинарного рецепта. Однотипные поля разных записей образуют столбец таблицы.

Файлы: 1 файл

Курсовая БД.doc

— 288.00 Кб (Скачать файл)

      :new.Улица = Улица.Код_КЛАДР;

  IF (

    /* %NotnullFK(:%New," IS NOT NULL AND") */

   

    NUMROWS = 0

  )

  THEN

    raise_application_error(

      -20007,

      'Cannot update Адрес_участка  because Улица does not exist.'

    );

  END IF;

  /* ERwin Builtin 8 сентября 2013 г. 18:02:39 */

  /* Район R/13 Адрес_участка on child update restrict */

  /* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Район"

    CHILD_OWNER="", CHILD_TABLE="Адрес_участка"

    P2C_VERB_PHRASE="R/13", C2P_VERB_PHRASE="",

    FK_CONSTRAINT="R_13", FK_COLUMNS="Район" */

  SELECT count(*) INTO NUMROWS

    FROM Район

    WHERE

      /* %JoinFKPK(:%New,Район," = "," AND") */

      :new.Район = Район.Код_КЛАДР;

  IF (

    /* %NotnullFK(:%New," IS NOT NULL AND") */

   

    NUMROWS = 0

  )

  THEN

   raise_application_error(

      -20007,

      'Cannot update Адрес_участка  because Район does not exist.'

    );

  END IF;

  /* ERwin Builtin 8 сентября 2013 г. 18:02:39 */

  /* Населенный_пункт R/14 Адрес_участка  on child update restrict */

  /* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Населенный_пункт"

    CHILD_OWNER="", CHILD_TABLE="Адрес_участка"

    P2C_VERB_PHRASE="R/14", C2P_VERB_PHRASE="",

    FK_CONSTRAINT="R_14", FK_COLUMNS="Населенный_пункт" */

  SELECT count(*) INTO NUMROWS

    FROM Населенный_пункт

    WHERE

      /* %JoinFKPK(:%New,Населенный_пункт," = "," AND") */

      :new.Населенный_пункт = Населенный_пункт.Код_КЛАДР;

  IF (

    /* %NotnullFK(:%New," IS NOT NULL AND") */

   

    NUMROWS = 0

  )

  THEN

    raise_application_error(

      -20007,

      'Cannot update Адрес_участка  because Населенный_пункт does not exist.'

    );

  END IF;

-- ERwin Builtin 8 сентября 2013 г. 18:02:39

END;

CREATE  TRIGGER tD_Документ AFTER DELETE ON Документ for each row

-- ERwin Builtin 8 сентября 2013 г. 18:02:39

-- DELETE trigger on Документ 

DECLARE NUMROWS INTEGER;

BEGIN

    /* ERwin Builtin 8 сентября 2013 г. 18:02:39 */

    /* Документ R/4 Заявитель  on parent delete restrict */

    /* ERWIN_RELATION:CHECKSUM="0000ed69", PARENT_OWNER="", PARENT_TABLE="Документ"

    CHILD_OWNER="", CHILD_TABLE="Заявитель"

    P2C_VERB_PHRASE="R/4", C2P_VERB_PHRASE="",

    FK_CONSTRAINT="R_4", FK_COLUMNS="Документ_заявителя" */

    SELECT count(*) INTO NUMROWS

      FROM Заявитель

      WHERE

        /*  %JoinFKPK(Заявитель,:%Old," = "," AND") */

        Заявитель.Документ_заявителя = :old.ИД_документа;

    IF (NUMROWS > 0)

    THEN

      raise_application_error(

        -20001,

        'Cannot delete Документ because Заявитель exists.'

      );

    END IF;

END;

CREATE  TRIGGER tU_Документ AFTER UPDATE ON Документ for each row

-- ERwin Builtin 8 сентября 2013 г. 18:02:39

-- UPDATE trigger on Документ 

DECLARE NUMROWS INTEGER;

BEGIN

  /* ERwin Builtin 8 сентября 2013 г. 18:02:39 */

  /* Документ R/4 Заявитель on parent update restrict */

  /* ERWIN_RELATION:CHECKSUM="00012079", PARENT_OWNER="", PARENT_TABLE="Документ"

    CHILD_OWNER="", CHILD_TABLE="Заявитель"

    P2C_VERB_PHRASE="R/4", C2P_VERB_PHRASE="",

    FK_CONSTRAINT="R_4", FK_COLUMNS="Документ_заявителя" */

  IF

    /* %JoinPKPK(:%Old,:%New," <> "," OR ") */

    Документ.ИД_документа <> Документ.ИД_документа

  THEN

    SELECT count(*) INTO NUMROWS

      FROM Заявитель

      WHERE

        Заявитель.Документ_заявителя  = :old.ИД_документа;

    IF (NUMROWS > 0)

    THEN

      raise_application_error(

        -20005,

        'Cannot update Документ because Заявитель exists.'

      );

    END IF;

  END IF;

END;

 

ЗАКЛЮЧЕНИЕ

Объектно-ориентированное программирование нацелено на разработку крупных программных комплексов, разрабатываемых командой программистов (возможно, достаточно большой). Проектирование системы в целом, создание отдельных компонент и их объединение в конечный продукт при этом часто выполняется разными людьми, и нет ни одного специалиста, который знал бы о проекте всё.

Объектно-ориентированное проектирование состоит в описании структуры  и поведения проектируемой системы, то есть, фактически, в ответе на два  основных вопроса: 1. Из каких частей состоит система. 2. В чём состоит ответственность каждой из частей.

Выделение частей производится таким  образом, чтобы каждая имела минимальный  по объёму и точно определённый набор  выполняемых функций (обязанностей), и при этом взаимодействовала  с другими частями как можно  меньше.

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

Большое значение имеет правильное построение иерархии классов. Одна из известных проблем больших систем, построенных по ООП - технологии - так называемая проблема хрупкости базового класса. Она состоит в том, что на поздних этапах разработки, когда иерархия классов построена и на её основе разработано большое количество кода, оказывается трудно или даже невозможно внести какие-либо изменения в код базовых классов иерархии (от которых порождены все или многие работающие в системе классы). Даже если вносимые изменения не затронут интерфейс базового класса, изменение его поведения может непредсказуемым образом отразиться на классах-потомках. В случае крупной системы разработчик базового класса не просто не в состоянии предугадать последствия изменений, он даже не знает о том, как именно базовый класс используется и от каких особенностей его поведения зависит корректность работы классов-потомков.

 

СПИСОК  ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

  1. Грубер М. Понимание SQL. [Текст]: Учебное пособие для вузов/Ф.Ф. Грубер, Маклаков С.В. М. - М.: Издательство Спб. Питер, 1993. – 253 с.
  2. Санжей Мишра. Секреты Oracle SQL. [Текст]: Учебное пособие для вузов/Санжей Мишра, Алан Бьюли. М. - М.: Издательство Символ-Плюс, 2006. – 368 с.
  3. Проектирование ERwin data modeler [Электронный ресурс]: Проектирование/Режим доступа: www.erwin.ru/‎
  4. SQL [Электронный ресурс]: Проектирование/Режим доступа: www.sql.ru

 


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