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
... типов систем ПО, однако устойчивое положение они занимают в следующих областях:1. Обеспечение разработки делового и коммерческого ПО. Широкое применение CASE технологий обусловлено массовостью этой прикладной области, в которой CASE применяется не только для разработки ПО, но и для создания моделей систем, помогающих коммерческимим структурам решать задачи стратегического планирования, управления ...
... технического обеспечения оснащенность ближайших объектов техникой и т.д. Данный проект позволяет вести необходимую информацию о объектах ГО и оценить в ЧС складывающеюся обстановку.7. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ СИСТЕМЫ УПРАВЛЕНИЯ БАЗОЙ ДАННЫХ ОБЪЕКТОВ ГО. 7.1. Назначение и цели создания программного продукта Данное программное средство должно выполнять технологические функции в ...
... в пенсионный фонд (1% от зарплаты) 1345 Затраты на эксплуатацию оборудования (амортизацию) 976000 ИТОГО: 1207213 Заключение За время работы над дипломным проектом по теме «Организация удаленного доступа к распределенным базам данных» были изучены теоретические основы построения распределенных информационных систем с возможностью оперативного удаленного доступа к данным. ...
... мире. Внутренняя схема - это сама база данных. Отсюда вытекают основные этапы, на которые разбивается процесс проектирования базы данных информационной системы: Концептуальное проектирование - сбор, анализ и редактирование требований к данным. Для этого осуществляются следующие мероприятия: обследование предметной области, изучение ее информационной структуры выявление всех фрагментов, каждый ...
0 комментариев