Реферат по предмету "Информатика, программирование"


Разработка серверной части базы данных с применением CASE-технологий

Содержание
Задание
Введение
1. Созданиелогической модели
2. Создание физическоймодели
3. Схема данных в SQL
Заключение
Список используемой литературы
Приложение

Задание
Предметнаяобласть «Учебная точка» «Аудитория»
/>

Введение
ERwin — этографический инструментарий для моделирования данных, основной целью которого являетсяпомощь аналитику в использовании бизнес-правил и требований к информации присоздании логических и физических моделей данных. Процесс моделирования в Erwin базируется на методологиипроектирования реляционных баз данных- IDEF1X. Онаопределяет стандарты терминологии и графического изображения типовых элементовна ER-диаграммах.
Обычно разработка моделибазы данных состоит из двух этапов: составление логической модели и создание наее основе физической модели. ERwin полностью поддерживает такой процесс, онимеет два представления модели: логическое (logical) и физическое (physical).Таким образом, разработчик может строить логическую модель базы данных, незадумываясь над деталями физической реализации, т.е. уделяя основное вниманиетребованиям к информации и бизнес-процессам, которые будет поддерживать будущаябаза данных. ERwin не только имеет очень удобный пользовательский интерфейс,позволяющий представить базу данных в самых различных аспектах, но иподдерживает автоматическую генерацию спроектированной и определенной нафизическом уровне структуры данных. При создании новой модели выбирается серверСУБД. Выбранный сервер определяет физический уровень представления модели. Длятого, чтобы переключится на физический уровень модели, нужно выбрать кнопку Phisical/Logical на панели инструментов.

1. Создание логической модели
Логическая модель данныхявляется визуальным представлением структур данных, их атрибутов ибизнес-правил. На нем данные представляются так, как выглядят в реальном мире,и могут называться так, как они называются в реальном мире. Логическая модельпредставляет данные таким образом, чтобы они легко воспринимались. С точкизрения пользователя Erwin, процесссоздания логической модели данных заключается в визуальном редактировании ER-диаграммы. Диаграмма Erwin строится из трех основных блоков:сущностей, атрибутов и связей.Логическая модель данных может быть построена наоснове другой логической модели, например на основе модели процессов.Проектирование логической модели свободно от требований платформы и языкареализации или способа дальнейшего использования данных. Разработчик моделииспользует требования к данным и результаты анализа для формирования логическоймодели данных. Разработчик приводит логическую модель к третьей нормальной.
Первичный ключ (primary key) — это атрибут илигруппа атрибутов, однозначно идентифицирующаяэкземпляр сущности, атрибутыпервичного ключа на диаграмме не требуютспециального обозначения — это те атрибуты, которыенаходятся в списке атрибутов выше горизонтальнойлинии. Ключи могут быть сложными, т.е. содержащими несколько атрибутов.
Первичныеключи предметной области «Учебная точка»:
-сущность «Аудитория»-№ аудитории;
-сущность «Учебнаягруппа»- № группы;
-в сущности «Расписание»составной первичный ключ — № аудитории и № группы.
В одной сущности могут оказаться несколько атрибутовили наборов атрибутов, претендующих на роль первичного ключа. Такие претенденты называются потенциальными ключами (candidate key).
Внешнимключом (foreign key) называется поле таблицы, предназначенное дляхранения значения первичного ключа другой таблицы с целью организации связимежду этими таблицами.
В предмотнойобласти «Учебная точка» имеются внешние ключи (№ аудитории и №группы) в сущности «Расписание».
Процесснормализации состоит в том, чтобы представить данные в виде набора таблиц, вкоторых все неключевые поля зависят только от целого — возможно, составного — ключа. Тем самым минимизируется избыточность данных, и ограничиваютсянесвязанные структуры. Известно пять нормальных форм, однако на практикеиспользуются только первые три.
—  Первая нормальнаяформа
Говорят, что сущность соответствуетпервой нормальной форме, если в каждом поле каждой ее строки содержится ровноодно значение.
—  Вторая нормальнаяформа
Сущность соответствуетвторой нормальной форме, если она отвечает критерию первой нормальной формы, азначения ее любого неключевого поля зависят от значений всех ключевых полей.Таким образом, если в сущности некоторое поле содержит значение, представляющеесобой факт относительно подмножества ключевых полей, то сущность несоответствует второй нормальной форме.
—  Третья нормальнаяформа
Значение каждогонеключевого поля сущности в третьей нормальной форме должно представлять собойфакт, не зависящий от значений никаких других неключевых полей. Кроме того,сущность должна соответствовать правилу второй нормальной формы.
Все сущности предметнойобласти «Учебная точка» отвечают требованиям 3 нормальных форм.
Связующая сущность- сущность,созданная для преобразования отношений типа многие-ко-многим между двумя сущностямив отношения типа один-ко-многим. Она содержит первичные ключи обеих таблиц. Впредметной области «Учебная точка» связующей является сущность «Расписание».
Логическая модельпредметной области «Учебная точка»:
/>
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,
Год_последнего_ремонта datetimeNULL )
go
ALTER TABLE Аудитория
ADD CONSTRAINTXPKАудитория PRIMARY KEY CLUSTERED (Номер_аудитории ASC)
go
CREATE TABLE Расписание
(
Номер_аудитории varchar(20) NOTNULL ,
Номер_группы varchar(20) NOT NULL ,
Дата datetime NULL ,
Время datetime NULL ,
Наименование_дисциплины varchar(20) NULL
)
go
ALTER TABLE Расписание
ADD CONSTRAINTXPKРасписание PRIMARY KEY CLUSTERED (Номер_аудитории ASC, Номер_группы ASC)
go
CREATE TABLE Учебная_группа
(
Номер_группы varchar(20) NOT NULL ,
Специальность varchar(20) NULL ,
Курс integer NULL ,
Факультет varchar(20) NULL
)
go
ALTER TABLE Учебная_группа
ADD CONSTRAINTXPKУчебная_группа PRIMARY KEY CLUSTERED (Номер_группыASC)
go
ALTER TABLE Расписание
ADD CONSTRAINTR_4 FOREIGN KEY (Номер_аудитории) REFERENCES Аудитория(Номер_аудитории)
ON DELETE NOACTION
ON UPDATE NOACTION
go
ALTER TABLE Расписание
ADD CONSTRAINTR_5 FOREIGN KEY (Номер_группы) REFERENCES Учебная_группа(Номер_группы)
ON DELETE NOACTION
ON UPDATE NOACTION
go
CREATE TRIGGERtD_Аудитория ON Аудитория FOR DELETE AS
/* ERwinBuiltin 24 июня 2010 г. 9:55:32 */
/* DELETEtrigger on Аудитория */
BEGIN
DECLARE @errnoint,
@errmsg varchar(255)
/* ERwinBuiltin 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 * FROMdeleted, Расписание
WHERE
/* %JoinFKPK(Расписание,deleted," = ","AND") */
Расписание.Номер_аудитории= deleted.Номер_аудитории
)
BEGIN
SELECT @errno =30001,
@errmsg ='Cannot delete Аудитория because Расписание exists.'
GOTO ERROR
END
/* ERwinBuiltin 24 июня 2010 г. 9:55:32 */
RETURN
ERROR:
raiserror@errno @errmsg
rollbacktransaction
END
go
CREATE TRIGGERtU_Аудитория ON Аудитория FOR UPDATE AS
/* ERwinBuiltin 24 июня 2010 г. 9:55:32 */
/* UPDATEtrigger on Аудитория */
BEGIN
DECLARE @NUMROWSint,
@nullcnt int,
@validcnt int,
@insНомер_аудитории varchar(20),
@errno int,
@errmsg varchar(255)
SELECT@NUMROWS = @@rowcount
/* ERwinBuiltin 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 * FROMdeleted, Расписание
WHERE
/* %JoinFKPK(Расписание,deleted," = ","AND") */
Расписание.Номер_аудитории= deleted.Номер_аудитории
)
BEGIN
SELECT @errno =30005,
@errmsg ='Cannot update Аудитория because Расписание exists.'
GOTO ERROR
END
END
/* ERwinBuiltin 24 июня 2010 г. 9:55:32 */
RETURN
ERROR:
raiserror@errno @errmsg
rollbacktransaction
END
go
CREATE TRIGGERtD_Расписание ON Расписание FOR DELETE AS
/* ERwinBuiltin 24 июня 2010 г. 9:55:32 */
/* DELETEtrigger on Расписание */
BEGIN
DECLARE @errnoint,
@errmsg varchar(255)
/* ERwinBuiltin 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
/* ERwinBuiltin 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
/* ERwinBuiltin 24 июня 2010 г. 9:55:32 */
RETURN
ERROR:
raiserror@errno @errmsg
rollbacktransaction
END
go
CREATE TRIGGERtU_Расписание ON Расписание FOR UPDATE AS
/* ERwinBuiltin 24 июня 2010 г. 9:55:32 */
/* UPDATEtrigger on Расписание */
BEGIN
DECLARE @NUMROWSint,
@nullcnt int,
@validcnt int,
@insНомер_аудитории varchar(20),
@insНомер_группы varchar(20),
@errno int,
@errmsg varchar(255)
SELECT@NUMROWS = @@rowcount
/* ERwinBuiltin 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(*) frominserted where»," AND") */
IF @validcnt +@nullcnt != @NUMROWS
BEGIN
SELECT @errno =30007,
@errmsg ='Cannot update Расписание because Аудитория does not exist.'
GOTO ERROR
END
END
/* ERwinBuiltin 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(*)
FROMinserted, Учебная_группа
WHERE
/*%JoinFKPK(inserted, Учебная_группа) */
inserted.Номер_группы =Учебная_группа.Номер_группы
/*%NotnullFK(inserted," IS NULL",«select @nullcnt = count(*) frominserted where»," AND") */
IF @validcnt +@nullcnt != @NUMROWS
BEGIN
SELECT @errno =30007,
@errmsg ='Cannot update Расписание because Учебная_группа does not exist.'
GOTO ERROR
END
END
/* ERwinBuiltin 24 июня 2010 г. 9:55:32 */
RETURN
ERROR:
raiserror@errno @errmsg
rollbacktransaction
END
go
CREATE TRIGGERtD_Учебная_группа ON Учебная_группа FOR DELETE AS
/* ERwin Builtin 24 июня2010 г. 9:55:32 */
/* DELETEtrigger on Учебная_группа */
BEGIN
DECLARE @errnoint,
@errmsg varchar(255)
/* ERwinBuiltin 24 июня 2010 г. 9:55:32 */
/* Учебная_группа R/5 Расписание on parent delete noaction */
/*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 * FROMdeleted, Расписание
WHERE
/* %JoinFKPK(Расписание,deleted," = ","AND") */
Расписание.Номер_группы =deleted.Номер_группы)
BEGIN
SELECT @errno = 30001,
@errmsg ='Cannot delete Учебная_группа because Расписание exists.'
GOTO ERROR
END
/* ERwinBuiltin 24 июня 2010 г. 9:55:32 */
RETURN
ERROR:
raiserror @errno@errmsg
rollbacktransaction
END
go
CREATE TRIGGERtU_Учебная_группа ON Учебная_группа FOR UPDATE AS
/* ERwinBuiltin 24 июня 2010 г. 9:55:32 */
/* UPDATEtrigger on Учебная_группа */
BEGIN
DECLARE @NUMROWS int,
@nullcnt int,
@validcnt int,
@insНомер_группы varchar(20),
@errno int,
@errmsg varchar(255)
SELECT@NUMROWS = @@rowcount
/* ERwinBuiltin 24 июня 2010 г. 9:55:32 */
/* Учебная_группа R/5 Расписание on parent update noaction */
/*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 * FROMdeleted, Расписание
WHERE
/* %JoinFKPK(Расписание,deleted," = ","AND") */
Расписание.Номер_группы =deleted.Номер_группы
)
BEGIN
SELECT @errno =30005,
@errmsg ='Cannot update Учебная_группа because Расписание exists.'
GOTO ERROR
END
END
/* ERwinBuiltin 24 июня 2010 г. 9:55:32 */
RETURN
ERROR:
raiserror@errno @errmsg
rollbacktransaction
END
go


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.