2. Создание физической модели

Физическая модель данных, напротив, зависит от конкретной СУБД, фактически являясь отображением системного каталога БД. Создание модели данных, как правило, начинается с создания логической модели. После описания логической модели, проектировщик может выбрать необходимую СУБД и ERwin автоматически создаст соответствующую физическую модель. В физической модели содержится информация о всех объектах БД. Поскольку стандартов на объекты БД не существует (например, нет стандарта на типы данных), физическая модель зависит от конкретной реализации СУБД. Следовательно, одной и той же логической модели могут соответствовать несколько разных физических моделей. Если в логической модели не имеет значения, какой конкретно тип данных имеет атрибут, то в физической модели важно описать всю информацию о конкретных физических объектах - таблицах, столбцах и отношениях. Сущности логической модели, вероятно, станут таблицами в физической модели. Логические атрибуты станут столбцами. Логические отношения станут ограничениями целостности связей. Некоторые логические отношения невозможно реализовать в физической базе данных.

На основе физической модели ERwin может сгенерировать системный каталог СУБД или соответствующий SQL-скрипт. Этот процесс называется прямым проектированием (Forward Engineering). Для выполнения прямого проектирования служит меню Tool/ Forward Engineering/Schema Generation. Тем самым достигается масштабируемость - создав одну логическую модель данных, можно сгенерировать физические модели под любую поддерживаемую ERwin СУБД. С другой стороны, ERwin способен по содержимому системного каталога или SQL-скрипту воссоздать физическую и логическую модель данных (Reverse Engineering). На основе полученной логической модели данных можно сгенерировать физическую модель для другой СУБД и затем сгенерировать ее системный каталог. Следовательно, ERwin позволяет решить задачу по переносу структуры данных с одного сервера на другой.

ERwin поддерживает большинство ведущих наиболее популярных реляционных СУБД, а также настольные системы: Access, Microsoft SQL Server, Oracle, FoxPro, dBase, Clipper , Paradox и многие другие. При смене СУБД ERwin автоматически преобразует одну физическую модель в другую. В окне Target Server можно выбрать новый сервер СУБД. Сервер СУБД можно изменить при помощи пункта меню Database/Choose Database.

Физическая модель предметной области "Учебная точка":


3. Схема данных в SQL


Заключение

Под термином CASE (Computer Aided Software Engineering) понимаются программные средства, поддерживающие процессы создания и сопровождения АС, включая анализ и формулировку требований, проектирование прикладного программного обеспечения и баз данных, генерацию кода, тестирование, документирование, обеспечение качества, конфигурационное управление и управление проектом, а также другие процессы. CASE-средства вместе с системным программным обеспечением и техническими средствами образуют полную среду разработки АС.

Возрастающая сложность современных автоматизированных систем управления и повышение требовательности к ним обуславливает применение эффективных технологий создания и сопровождения АС в течение всего жизненного цикла. Такие технологии, базирующиеся на методологиях подготовки информационных систем и соответствующих комплексах интегрированных инструментальных средств, а также ориентированные на поддержку полного жизненного цикла АС или его основных этапов, получили название CASE-технологий и CASE-средств.

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

Однако во многих случаях проектирование АС выполняется в основном на интуитивном уровне с применением неформальных методов, основанных на искусстве, практическом опыте и экспертных оценках.

Кроме того, в процессе создания и функционирования АС информационные потребности пользователей могут изменяться или уточняться, что еще более усложняет разработку и сопровождение автоматизированных систем управления. От перечисленных недостатков в наибольшей степени свободны подходы, основанные на программно-технических средствах специального класса - CASE-средствах, реализующих CASE-технологии создания и сопровождения АС.


Список используемой литературы

1)  Маклаков С.В. CASE-средства разработки информационных систем. BPwin и Erwin –М.: ДиалогМифи, 2001.

2)  Горин С.В., Тандоев А.Ю. Применение CASE-средства Erwin 2.0 для информационного моделирования в системах обработки данных. "СУБД", 1995, №3.

3)  Панащук С.А. Разработка информационных систем с использованием CASE-систем. "СУБД", 1995, №3.

4)  Хоторн Роб "Разработка баз данных, Micrososoft SQL Server 2000".-Вильямс, 2001


Приложение

Код физической модели

CREATE TABLE Аудитория

( Номер_аудитории varchar(20) NOT NULL ,

Площадь_в_кв_м integer NULL ,

Категория_аудитории varchar(20) NULL ,

Количество_мест integer NULL ,

Год_последнего_ремонта datetime NULL )

go

ALTER TABLE Аудитория

ADD CONSTRAINT XPKАудитория PRIMARY KEY CLUSTERED (Номер_аудитории ASC)

go

CREATE TABLE Расписание

(

Номер_аудитории varchar(20) NOT NULL ,

Номер_группы varchar(20) NOT NULL ,

Дата datetime NULL ,

Время datetime NULL ,

Наименование_дисциплины varchar(20) NULL

)

go

ALTER TABLE Расписание

ADD CONSTRAINT XPKРасписание PRIMARY KEY CLUSTERED (Номер_аудитории ASC,Номер_группы ASC)

go

CREATE TABLE Учебная_группа

(

Номер_группы varchar(20) NOT NULL ,

Специальность varchar(20) NULL ,

Курс integer NULL ,

Факультет varchar(20) NULL

)

go

ALTER TABLE Учебная_группа

ADD CONSTRAINT XPKУчебная_группа PRIMARY KEY CLUSTERED (Номер_группы ASC)

go

ALTER TABLE Расписание

ADD CONSTRAINT R_4 FOREIGN KEY (Номер_аудитории) REFERENCES Аудитория(Номер_аудитории)

ON DELETE NO ACTION

ON UPDATE NO ACTION

go

ALTER TABLE Расписание

ADD CONSTRAINT R_5 FOREIGN KEY (Номер_группы) REFERENCES Учебная_группа(Номер_группы)

ON DELETE NO ACTION

ON UPDATE NO ACTION

go

CREATE TRIGGER tD_Аудитория ON Аудитория FOR DELETE AS

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* DELETE trigger on Аудитория */

BEGIN

DECLARE @errno int,

@errmsg varchar(255)

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* Аудитория R/4 Расписание on parent delete no action */

/* ERWIN_RELATION:CHECKSUM="00010257", PARENT_OWNER="", PARENT_TABLE="Аудитория"

CHILD_OWNER="", CHILD_TABLE="Расписание"

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

FK_CONSTRAINT="R_4", FK_COLUMNS="Номер_аудитории" */

IF EXISTS (

SELECT * FROM deleted,Расписание

WHERE

/* %JoinFKPK(Расписание,deleted," = "," AND") */

Расписание.Номер_аудитории = deleted.Номер_аудитории

)

BEGIN

SELECT @errno = 30001,

@errmsg = 'Cannot delete Аудитория because Расписание exists.'

GOTO ERROR

END

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tU_Аудитория ON Аудитория FOR UPDATE AS

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* UPDATE trigger on Аудитория */

BEGIN

DECLARE @NUMROWS int,

@nullcnt int,

@validcnt int,

@insНомер_аудитории varchar(20),

@errno int,

@errmsg varchar(255)

SELECT @NUMROWS = @@rowcount

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* Аудитория R/4 Расписание on parent update no action */

/* ERWIN_RELATION:CHECKSUM="0001242d", PARENT_OWNER="", PARENT_TABLE="Аудитория"

CHILD_OWNER="", CHILD_TABLE="Расписание"

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

FK_CONSTRAINT="R_4", FK_COLUMNS="Номер_аудитории" */

IF

/* %ParentPK(" OR",UPDATE) */

UPDATE(Номер_аудитории)

BEGIN

IF EXISTS (

SELECT * FROM deleted,Расписание

WHERE

/* %JoinFKPK(Расписание,deleted," = "," AND") */

Расписание.Номер_аудитории = deleted.Номер_аудитории

)

BEGIN

SELECT @errno = 30005,

@errmsg = 'Cannot update Аудитория because Расписание exists.'

GOTO ERROR

END

END

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tD_Расписание ON Расписание FOR DELETE AS

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* DELETE trigger on Расписание */

BEGIN

DECLARE @errno int,

@errmsg varchar(255)

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* Аудитория R/4 Расписание on child delete no action */

/* ERWIN_RELATION:CHECKSUM="000294c9", PARENT_OWNER="", PARENT_TABLE="Аудитория"

CHILD_OWNER="", CHILD_TABLE="Расписание"

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

FK_CONSTRAINT="R_4", FK_COLUMNS="Номер_аудитории" */

IF EXISTS (SELECT * FROM deleted,Аудитория

WHERE

/* %JoinFKPK(deleted,Аудитория," = "," AND") */

deleted.Номер_аудитории = Аудитория.Номер_аудитории AND

NOT EXISTS (

SELECT * FROM Расписание

WHERE

/* %JoinFKPK(Расписание,Аудитория," = "," AND") */

Расписание.Номер_аудитории = Аудитория.Номер_аудитории

)

)

BEGIN

SELECT @errno = 30010,

@errmsg = 'Cannot delete last Расписание because Аудитория exists.'

GOTO ERROR

END

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* Учебная_группа R/5 Расписание on child delete no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Учебная_группа"

CHILD_OWNER="", CHILD_TABLE="Расписание"

P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_5", FK_COLUMNS="Номер_группы" */

IF EXISTS (SELECT * FROM deleted,Учебная_группа

WHERE

/* %JoinFKPK(deleted,Учебная_группа," = "," AND") */

deleted.Номер_группы = Учебная_группа.Номер_группы AND

NOT EXISTS (

SELECT * FROM Расписание

WHERE

/* %JoinFKPK(Расписание,Учебная_группа," = "," AND") */

Расписание.Номер_группы = Учебная_группа.Номер_группы

)

)

BEGIN

SELECT @errno = 30010,

@errmsg = 'Cannot delete last Расписание because Учебная_группа exists.'

GOTO ERROR

END

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tU_Расписание ON Расписание FOR UPDATE AS

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* UPDATE trigger on Расписание */

BEGIN

DECLARE @NUMROWS int,

@nullcnt int,

@validcnt int,

@insНомер_аудитории varchar(20),

@insНомер_группы varchar(20),

@errno int,

@errmsg varchar(255)

SELECT @NUMROWS = @@rowcount

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* Аудитория R/4 Расписание on child update no action */

/* ERWIN_RELATION:CHECKSUM="0002b717", PARENT_OWNER="", PARENT_TABLE="Аудитория"

CHILD_OWNER="", CHILD_TABLE="Расписание"

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

FK_CONSTRAINT="R_4", FK_COLUMNS="Номер_аудитории" */

IF

/* %ChildFK(" OR",UPDATE) */

UPDATE(Номер_аудитории)

BEGIN

SELECT @nullcnt = 0

SELECT @validcnt = count(*)

FROM inserted,Аудитория

WHERE

/* %JoinFKPK(inserted,Аудитория) */

inserted.Номер_аудитории = Аудитория.Номер_аудитории

/* %NotnullFK(inserted," IS NULL","select @nullcnt = count(*) from inserted where"," AND") */

IF @validcnt + @nullcnt != @NUMROWS

BEGIN

SELECT @errno = 30007,

@errmsg = 'Cannot update Расписание because Аудитория does not exist.'

GOTO ERROR

END

END

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* Учебная_группа R/5 Расписание on child update no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Учебная_группа"

CHILD_OWNER="", CHILD_TABLE="Расписание"

P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_5", FK_COLUMNS="Номер_группы" */

IF

/* %ChildFK(" OR",UPDATE) */

UPDATE(Номер_группы)

BEGIN

SELECT @nullcnt = 0

SELECT @validcnt = count(*)

FROM inserted,Учебная_группа

WHERE

/* %JoinFKPK(inserted,Учебная_группа) */

inserted.Номер_группы = Учебная_группа.Номер_группы

/* %NotnullFK(inserted," IS NULL","select @nullcnt = count(*) from inserted where"," AND") */

IF @validcnt + @nullcnt != @NUMROWS

BEGIN

SELECT @errno = 30007,

@errmsg = 'Cannot update Расписание because Учебная_группа does not exist.'

GOTO ERROR

END

END

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tD_Учебная_группа ON Учебная_группа FOR DELETE AS

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* DELETE trigger on Учебная_группа */

BEGIN

DECLARE @errno int,

@errmsg varchar(255)

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* Учебная_группа R/5 Расписание on parent delete no action */

/* ERWIN_RELATION:CHECKSUM="000102de", PARENT_OWNER="", PARENT_TABLE="Учебная_группа"

CHILD_OWNER="", CHILD_TABLE="Расписание"

P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_5", FK_COLUMNS="Номер_группы" */

IF EXISTS (

SELECT * FROM deleted,Расписание

WHERE

/* %JoinFKPK(Расписание,deleted," = "," AND") */

Расписание.Номер_группы = deleted.Номер_группы)

BEGIN

SELECT @errno = 30001,

@errmsg = 'Cannot delete Учебная_группа because Расписание exists.'

GOTO ERROR

END

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tU_Учебная_группа ON Учебная_группа FOR UPDATE AS

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* UPDATE trigger on Учебная_группа */

BEGIN

DECLARE @NUMROWS int,

@nullcnt int,

@validcnt int,

@insНомер_группы varchar(20),

@errno int,

@errmsg varchar(255)

SELECT @NUMROWS = @@rowcount

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

/* Учебная_группа R/5 Расписание on parent update no action */

/* ERWIN_RELATION : CHECKSUM = "00011854" , PARENT_OWNER="", PARENT_TABLE="Учебная_группа"

CHILD_OWNER="", CHILD_TABLE="Расписание"

P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="",

FK_CONSTRAINT="R_5", FK_COLUMNS="Номер_группы" */

IF

/* %ParentPK(" OR",UPDATE) */

UPDATE(Номер_группы)

BEGIN

IF EXISTS (

SELECT * FROM deleted,Расписание

WHERE

/* %JoinFKPK(Расписание,deleted," = "," AND") */

Расписание.Номер_группы = deleted.Номер_группы

)

BEGIN

SELECT @errno = 30005,

@errmsg = 'Cannot update Учебная_группа because Расписание exists.'

GOTO ERROR

END

END

/* ERwin Builtin 24 июня 2010 г. 9:55:32 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go


Информация о работе «Разработка серверной части базы данных с применением CASE-технологий»
Раздел: Информатика, программирование
Количество знаков с пробелами: 19019
Количество таблиц: 0
Количество изображений: 2

Похожие работы

Скачать
7877
0
0

... типов систем ПО, однако устойчивое положение они занимают в следующих областях:1. Обеспечение разработки делового и коммерческого ПО. Широкое применение CASE технологий обусловлено массовостью этой прикладной области, в которой CASE применяется не только для разработки ПО, но и для создания моделей систем, помогающих коммерческимим структурам решать задачи стратегического планирования, управления ...

Скачать
132727
8
17

... технического обеспечения оснащенность ближайших объектов техникой и т.д. Данный проект позволяет вести необходимую информацию о объектах ГО и оценить в ЧС складывающеюся обстановку.7. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ СИСТЕМЫ УПРАВЛЕНИЯ БАЗОЙ ДАННЫХ ОБЪЕКТОВ ГО. 7.1. Назначение и цели создания программного продукта Данное программное средство должно выполнять технологические функции в ...

Скачать
192976
8
10

... в пенсионный фонд (1% от зарплаты) 1345 Затраты на эксплуатацию оборудования (амортизацию) 976000 ИТОГО: 1207213 Заключение За время работы над дипломным проектом по теме «Организация удаленного доступа к распределенным базам данных» были изучены теоретические основы построения распределенных информационных систем с возможностью оперативного удаленного доступа к данным. ...

Скачать
133101
1
9

... мире. Внутренняя схема - это сама база данных. Отсюда вытекают основные этапы, на которые разбивается процесс проектирования базы данных информационной системы: Концептуальное проектирование - сбор, анализ и редактирование требований к данным. Для этого осуществляются следующие мероприятия: обследование предметной области, изучение ее информационной структуры выявление всех фрагментов, каждый ...

0 комментариев


Наверх