Єфремов М.Ф. лаби / 5 / 1
.docХід виконання роботи:
-
Відкривши браузер Google Chrome за допомогою пошукової системи Google знаходимо онлайн графічний редактор Gliffy та завантажуємо його.
Рис.1 Знаходження редактору
-
Створюємо модель БД з імям: neruchomictirl в графічному редакторі Glify використовуючи бібліотекуUML та Entity-Relationship(Рис.2).
а) б)
Рис.2 а)бібліотека UML б)бібліотека Entity-Relationship
-
Шляхом перетягування із вкладки UML та Entity-Relationship послідовно створюємо модель(Рис.2.1).
Рис.2.1 Створення моделі
-
Проводимо прямі лінії, котрі створюються наступним чином
Рис.2.2 Створення моделі
Рис.2.3ER-діаграма «neruchomictmvs»
-
Створюємо БД у середовищі MicrosoftSQLServer 2008.
-
Запускаємо середовище SQLServer Management Studio виконуючи наступні дії: Старт-> Всі програми -> Microsoft SQLServer 2008 R2 і обираємо програму «Середовище SQLServer Management Studio».
-
Рис.3.1 Запуск середовища розробки
3.2. Після запуску середовища розробки зявляється вікно «Підключення до сервера». В якому натискаємо кнопку Зєднання.
Рис.3.2 З’єднання з сервером
3.3. В середовищі розробки лівою клавішею миші(ЛКМ) клацаємо на Створити запитта вводимо код з наступним вмістом:
USE master;
GO
CREATE DATABASE neruchomictmvs;
-
Створюємо таблиці без заповненняз допомогою Transact-SQL.
create table Wall(
Wall_id int not null,
Material nvarchar(15)not null,
Constraint wallconstr primary key(Wall_id)
)
create table District(
District_id int not null,
District nvarchar(15) not null,
Constraint districtconstr primary key(District_id)
)
create table Street(
Street_id int not null,
Country nvarchar(50) not null,
City nvarchar(50) not null,
District_id int not null,
Street nvarchar(50) not null,
Constraint streetconstr primary key(Street_id),
Constraint streetdistrconstr foreign key(District_id)
References District(District_id)
)
create table Owners(
Owner_id int not null,
Lastname nvarchar(20) not null,
Firstname nvarchar(20) not null,
Middlename nvarchar(20) not null,
Born datetime not null,
Status nvarchar(20) not null,
Constraint ownerconstr primary key(Owner_id)
)
create table Account(
Account_id int not null,
Account int not null,
Lastname nvarchar(20) not null,
Firstname nvarchar(20) not null,
Middlename nvarchar(20) not null,
Pasport nvarchar(max) not null,
Constraint accountconstr primary key(Account_id)
)
create table Building(
Building_id int not null,
Street_id int not null,
Land int not null,
Year int not null,
Wall_id int not null,
Wear int not null,
Cost decimal(18,2) not null,
Line int not null,
Square decimal(18,2) not null,
Picture nvarchar(max),
Elevator bit,
Comment nvarchar(max),
Constraint buildconstr primary key(Building_id),
Constraint buildstreetconstr foreign key(Street_id)
References Street(Street_id),
Constraint buildwallconstr foreign key(Wall_id)
References Wall(Wall_id)
)
create table Flat(
Flat_id int not null,
Building_id int not null,
Flat int not null,
Storey int not null,
Rooms int not null,
SquareFlat decimal(18,2) not null,
Dwell int not null,
Branch int not null,
Balcony int null,
Height int not null,
Kind int not null,
Owner_id int not null,
Account_id int not null,
Constraint flatconstr primary key(Flat_id),
Constraint flatbuildconstr foreign key(Building_id)
References Building(Building_id),
Constraint flataccountconstr foreign key(Account_id)
References Account(Account_id),
Constraint flatownerconstr foreign key(Owner_id)
References Owners(Owner_id)
)
Рис.3.4. Всі створені таблиці в БД neruchomictmvs
-
Заповнюємо таблиці у відповідності до поставленого завдання за допомогою команди insert into.
useimmovablesmvs;
DECLARE @Transact varchar(20)='Transact';
BEGIN TRAN @Transact;
insert into dbo.Wall values (1,'Кирпич');
insert into dbo.Wall values (2,'Дерево');
insert into dbo.Wall values (3,'Бетон');
insert into dbo.Wall values (4,'Кирпич');
insert into dbo.Wall values (5,'матеріал1');
insert into dbo.Wall values (6,'матеріал2');
insert into dbo.Wall values (7,'матеріал3');
insert into dbo.Wall values (8,'матеріал4');
insert into dbo.Account values (1,334535,'Пелихівський', 'Леонід', 'Батькович','ВН345973645');
insert into dbo.Account values (2,324535,'Іванюк', 'Роман', 'Леонідович','ВН345973641');
insert into dbo.Account values (3,677535,'Заїка', 'Анатолій', 'Вікторович','ВН345973643');
insert into dbo.Account values (4,435535,'Коржик', 'Вадим', 'Інокантійович','ВН345973648');
insert into dbo.Account values (5,334566,'Капінус', 'Олександр', 'Сергійович','ВН345973644');
insert into dbo.Account values (6,456346,'Оленюк', 'Олексій', 'Олекснадрович','ВН345973640');
insert into dbo.Account values (7,123143,'Горинич', 'Олександр', 'Олександрович','ВН345922222');
insert into dbo.Account values (8,567432,'Ляшевич', 'Сергій', 'Сергійович','ВН345973445');
insert into dbo.Owners values (1,'Іванюк', 'Роман', 'Леонідович','11.05.1992','Не одружений');
insert into dbo.Owners values (2,'Заїка', 'Анатолій', 'Вікторович','03.05.1992','Не одружений');
insert into dbo.Owners values (3,'Ляшевич', 'Сергій', 'Сергійович','24.05.1991','Не одружений');
insert into dbo.Owners values (4,'Горинич', 'Олександр', 'Олександрович','11.03.1991','Не одружений');
insert into dbo.Owners values (5,'Капінус', 'Олександр', 'Сергійович','21.02.1992','Не одружений');
insert into dbo.Owners values (6,'Коржик', 'Вадим', 'Інокантійович','31.01.1992','Не одружений');
insert into dbo.Owners values (7,'Оленюк', 'Олексій', 'Олекснадрович','24.05.1992','Не одружений');
insert into dbo.Owners values (8,'Пелихівський', 'Леонід', 'Батькович','12.08.1992','Не одружений');
insert into dbo.District values (1,'Центр');
insert into dbo.District values (2,'Крошня');
insert into dbo.District values (3,'Богунія');
insert into dbo.District values (4,'Мальованка');
insert into dbo.District values (5,'Корбутівка');
insert into dbo.District values (6,'Польова');
insert into dbo.District values (7,'Корбутівка1');
insert into dbo.District values (8,'Польова1');
insert into dbo.Street values (1,'Україна','Житомир',1,'Московська');
insert into dbo.Street values (2,'Україна','Житомир',1,'Київська');
insert into dbo.Street values (3,'Україна','Житомир',5,'Черняховська');
insert into dbo.Street values (4,'Україна','Житомир',1,'Б-Тена');
insert into dbo.Street values (5,'Україна','Житомир',2,'Щорса');
insert into dbo.Street values (6,'Україна','Житомир',1,'Хлібна');
insert into dbo.Street values (7,'Україна','Житомир',1,'Московська');
insert into dbo.Street values (8,'Україна','Житомир',3,'Московська');
insert into dbo.Building values (1,1,1,1,1,82,1,2,1,3,1,1);
insert into dbo.Building values (2,4,1,1,3,45,1,2,1,2,1,1);
insert into dbo.Building values (3,7,2,1,2,30,1,2,1,1,1,1);
insert into dbo.Building values (4,3,1,1,3,54,1,2,1,3,1,1);
insert into dbo.Building values (5,2,1,1,2,72,1,2,1,3,1,1);
insert into dbo.Building values (6,5,1,1,1,82,1,2,1,4,1,1);
insert into dbo.Building values (7,6,1,1,3,82,1,2,1,5,1,1);
insert into dbo.Building values (8,7,1,1,2,82,1,2,1,3,1,1);
insert into dbo.Flat values (1,1,1,1,5,82,1,2,1,3,1,1,1);
insert into dbo.Flat values (2,4,1,1,4,45,1,2,1,2,1,1,1);
insert into dbo.Flat values (3,7,2,1,3,30,1,2,1,1,1,1,1);
insert into dbo.Flat values (4,3,1,1,6,54,1,2,1,3,1,1,1);
insert into dbo.Flat values (5,2,1,1,2,72,1,2,1,3,1,1,1);
insert into dbo.Flat values (6,5,1,1,3,82,1,2,1,4,1,1,1);
insert into dbo.Flat values (7,6,1,1,3,82,1,2,1,5,1,1,1);
insert into dbo.Flat values (8,8,1,1,3,82,1,2,1,3,1,1,1);
COMMIT TRANSACTION;
6.1. Для кожного номера проекту отримання номера проекту і номера номерів службовців, що служать в убуваючому порядку БД SAMPLE+pib
USE Samplemvs
SELECT dbo.Project.Project_no,dbo.Employee.emp_no
FROM dbo.Project LEFT OUTER JOIN dbo.Works_on
ON dbo.Project.Project_no=dbo.Works_on.project_no
LEFT OUTER JOIN dbo.Employee
ON dbo.Employee.emp_no=dbo.Works_on.emp_no
ORDER BY dbo.Project.Project_no,dbo.Employee.emp_no DESC;
--ORDER BY dbo.Employee.emp_no DESC;
Рис.6.1. Запит до бд
6.2. Отримання повних подробиць про усіх службовців, хто працює над проектом Gemini БД SAMPLE+pib
USE Samplemvs
SELECT dbo.Employee.*
FROM dbo.Employee LEFT OUTER JOIN dbo.Works_on
ON dbo.Employee.emp_no=dbo.Works_on.emp_no
LEFT OUTER JOIN dbo.Project
ON dbo.Project.Project_no=dbo.Works_on.project_no
WHERE dbo.Project.Project_name='GEMINI';
Рис.6.2. Запит до бд
6.3. Використання псевдонімів таблиць. Вивести список клієнтів (cust_name, cust_contact) заказавши продукт RGAN01 та його кількість БД Torgtovlja+pib
USE Torgovljamvs;
GO
SELECT Cust.cust_name, Cust.cust_contact,OrdIt.quantity
FROM dbo.Customers AS Cust
JOIN dbo.Orders AS Ord
ON Ord.cust_id=Cust.cust_id
JOIN dbo.Ordersitems AS OrdIt
ON OrdIt.order_num=Ord.order_num
JOIN dbo.Products AS Prod
ON Prod.prod_id=OrdIt.prod_id
WHERE Prod.prod_id='RGAN01';
Рис.6.3. Запит до бд
6.4. Взнати загальну кількість продуктів запропонованих кожним постачальником клієнтам з вказівкою його імені та міста (vend_name,vend_city), розташувати кількість продуктів в порядку убивання БД Torgtovlja+pib
USE Torgovljamvs;
GO
SELECT dbo.Vendors.vend_name, dbo.Vendors.vend_city,
COUNT(dbo.Products.prod_id) AS prod_count
FROM dbo.Vendors
JOIN dbo.Products
ON dbo.Products.vend_id=dbo.Vendors.vend_id
GROUP BY dbo.Vendors.vend_name, dbo.Vendors.vend_city;
Рис.6.4. Запит до бд
7.1. Отримання імен і прізвищ усіх аналітиків(job = 'analist'), чиї відділи розташовуються у Сієтлі(Seattle) БДSAMPLE+pib
USE Samplemvs;
GO
SELECT dbo.Employee.emp_fname,dbo.Employee.emp_lname
FROM dbo.Employee
WHERE dbo.Employee.dept_no
IN
(SELECT dbo.Department.dept_no
FROM dbo.Department
WHERE dbo.Department.Location='Seattle'
)
AND
dbo.Employee.emp_no
IN
(SELECT dbo.Works_on.emp_no
FROM dbo.Works_on
WHERE dbo.Works_on.job='analyst'
);
Рис.7.1. Запит до бд
7.2. Отримання детальних даних про усі відділи, так само як і про місце проживання їх співробітників для усіх міст, які розташовані там же, де і відділи БДSAMPLE+pib
На жаль, даних про місце проживання службовців в БД немає (такі поля відсутні).
7.3. Підзапити. Отримати перелік усіх клієнтів (cust_name, cust_contact), що заказали продукт prod_id=’RGAN01’ БД Torgtovlja+pib
USE Torgovljamvs;
GO
SELECT dbo.Customers.cust_name, dbo.Customers.cust_contact
FROM dbo.Customers
WHERE dbo.Customers.cust_id
IN
(SELECT dbo.Orders.cust_id
FROM dbo.Orders
WHERE dbo.Orders.order_num
IN
(SELECT dbo.Ordersitems.order_num
FROM dbo.Ordersitems
WHERE dbo.Ordersitems.prod_id
IN
(SELECT dbo.Products.prod_id
FROM dbo.Products
WHERE dbo.Products.prod_id='RGAN01')
)
)
Рис.7.3. Запит до бд
7.4. Вивести ім’я клієнта, номер замовлення (cust_name, orderitems.order_num) та кількість предметів упорядкованих по цім замовленням БД Torgtovlja+pib
USE Torgovljamvs;
GO
SELECT dbo.Customers.cust_name,dbo.Ordersitems.order_num, COUNT(dbo.Ordersitems.order_num) AS Count_of_order
FROM dbo.Customers
JOIN dbo.Orders
ON dbo.Customers.cust_id=dbo.Orders.cust_id
JOIN dbo.Ordersitems
ON dbo.Orders.order_num=dbo.Ordersitems.order_num
GROUP BY dbo.Customers.cust_name,dbo.Ordersitems.order_num;
Рис.7.4. Запит до бд
-
На теці Представлення клацаємо ПКМ і в меню, що відкрилося натискаємо ЛКМ на пункт Створити діаграму бази даних.
Рис.8.1 Створення діаграми
-
У вікні що відкрилося обираємо таблиці, котрі необхідні для побудови діаграми.
Рис.8.2 Таблиці для побудови діаграми
-
Обравши у попередньому пункті таблиці ми отримаємо відображення їх структури на полотні вкладки між якими ми встановлюємо зв’язки шляхом перетягування поля однієї таблиці до відповідного поля іншої таблиці.
Рис.8.3. Діаграма
-
Зберігаємо представлення для цього у меню середовища Microsoft SQLServer Management Studio обираємо Файл->Зберегти представлення, та у вікні, що відкрилося вводимо назву представлення і клацаємо ОК:
Рис.8.4 Зберігаємо діаграму
ВИСНОВОК
На даній лабораторній роботі я набув практичних навичок побудови математичної моделі БД з використанням уніфікованої мови моделювання (UML) за допомогою графічний редактор Gliffy, а також оновив та збагатив знання, що стосуються роботи з середовищем розробки Microsoft SQL Server.