Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаба 6 / Лабораторная работа 6_НикитинаДС_ПИН-31Д

.docx
Скачиваний:
4
Добавлен:
16.07.2021
Размер:
210.58 Кб
Скачать

Лабораторная работа 6. Вариант 2

системы управления базами данных

Никитина Дарья пин-31Д

Тема: Использование программы ERwin для обратного и прямого проектирования, документирования и вычисления размера БД

Цель работы: ознакомиться со средствами программы Erwin, предназначенными для обратного проектирования, документирования и вычисления размера БД.

  1. Обратное проектирование диаграммы для имеющейся БД

  1. Удаление всех объектов, кроме многотабличной БД – диаграмма результата

  1. Логическая модель, дополненная определениями сущностей и атрибутов и наименованием связей

  1. Изменение имен таблиц в физической модели, задание синонимов

USE lab_1_1;

GO

EXEC sp_rename 'Action', 'A';

USE lab_1_1;

GO

EXEC sp_rename 'Flat', 'F';

USE lab_1_1;

GO

EXEC sp_rename 'Treaty', 'T';

USE lab_1_1;

GO

EXEC sp_rename 'User', 'U';

CREATE SYNONYM dbo.SA

FOR dbo.A;

GRANT SELECT, INSERT, UPDATE, DELETE

on dbo.SA TO User1;

CREATE SYNONYM dbo.SF

FOR dbo.F;

GRANT SELECT, INSERT, UPDATE, DELETE

on dbo.SF TO User1;

CREATE SYNONYM dbo.ST

FOR dbo.T;

GRANT SELECT, INSERT, UPDATE, DELETE

on dbo.ST TO User1;

CREATE SYNONYM dbo.SU

FOR dbo.U;

GRANT SELECT, INSERT, UPDATE, DELETE

on dbo.SU TO User1;

  1. Задание для столбцов значений по умолчанию

ALTER TABLE A

ADD DEFAULT '1' FOR PatrolID;

ALTER TABLE A

ADD DEFAULT '1' FOR False;

ALTER TABLE A

ADD DEFAULT 'NULL' FOR Document;

ALTER TABLE T

ADD DEFAULT 'NULL' FOR Prolong;

  1. Индексы для двух таблиц

CREATE INDEX users

ON U (Registr);

CREATE INDEX stopd

ON T (StopDate);

  1. Результат модель

  1. Вычислить размер

USE lab_1_1;

GO

SELECT

t.Name AS TableName,

s.Name AS SchemaName,

p.Rows AS RowCounts,

SUM(a.total_pages) * 8 AS TotalSpaceKB,

SUM(a.used_pages) * 8 AS UsedSpaceKB,

(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB

FROM

sys.tables t

INNER JOIN sys.indexes i ON t.object_id = i.object_id

INNER JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id

INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id

LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id

WHERE

t.Name NOT LIKE 'dt%'

AND t.is_ms_shipped = 0

AND i.object_id > 255

GROUP BY

t.Name, s.Name, p.Rows

ORDER BY

t.Name;

GO