Лаба 6 / Лабораторная работа 6_НикитинаДС_ПИН-31Д
.docx
Лабораторная работа 6. Вариант 2
системы управления базами данных
Никитина Дарья пин-31Д
Тема: Использование программы ERwin для обратного и прямого проектирования, документирования и вычисления размера БД
Цель работы: ознакомиться со средствами программы Erwin, предназначенными для обратного проектирования, документирования и вычисления размера БД.
Обратное проектирование диаграммы для имеющейся БД
Удаление всех объектов, кроме многотабличной БД – диаграмма результата
Логическая модель, дополненная определениями сущностей и атрибутов и наименованием связей
Изменение имен таблиц в физической модели, задание синонимов
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;
Задание для столбцов значений по умолчанию
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;
Индексы для двух таблиц
CREATE INDEX users
ON U (Registr);
CREATE INDEX stopd
ON T (StopDate);
Результат модель
Вычислить размер
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