- •Методические указания к лабораторным работам
- •«Клиент-серверные технологии субд»
- •Санкт-Петербург
- •080801 – Прикладная информатика в экономике и
- •Содержание
- •Цель работы
- •Программно - техническая платформа
- •Теоретическая часть
- •Перечень заданий к лабораторной работе
- •Порядок выполнения лабораторной работы
- •5.1 Разработка клиент-серверного приложения баз данных (тонкий клиент, толстый клиент, n-tier архитектура)
- •5.1.2 Создание приложения Course Manager в среде Visual Studio 2010
- •5.1.3 Формирование модели edm
- •5.1.4 Запрос данных о факультетах из базы данных School
- •5.1.5 Сохранение изменений, внесенных в объекты
- •5.2. Дизайн модели данных и ее использование в клиент-серверном приложении
- •5.3 Разработка клиент-серверных приложений баз данных с различными сценариям доступа к данным
- •Основы asp.Net Dynamic Data
- •5.4 Разработка распределенных приложений баз данных в клиент-серверной архитектуре с использованием сервисов данных
- •5.4.1. Создание сервиса данных
- •5.4.2 Создание клиентского приложения
- •5.5 Асинхронные приложения баз данных в клиент-серверной технологии субд
- •Содержание отчета по лабораторной работе
- •Список литературы
- •7.1 Основная
- •7.2 Дополнительная:
- •Приложения
- •Образец титульного листа отчета по лабораторной работе
- •Клиент-серверные технологии субд отчет по лабораторным работам
5.3 Разработка клиент-серверных приложений баз данных с различными сценариям доступа к данным
В качестве базы данных для примера (рис. 5.6), будет использована значительно упрощенная база данных, для хранения информации об авторах, книгах и издателях.
Рис 5.6 Схема тестовой базы данных
Существует список авторов (Authors) и издателей (Publishers). Также существует список книг (Books). Каждая книга может быть написана несколькими авторами, и принадлежать только одному издательству, у книги есть цена, которая не может быть менее 1 у.е. и более 1000 у.е., так же у книги есть дата публикации.
Итак, со схемой определились. Теперь приступим к созданию базы данных и наполнению ее тестовыми данными.
Открываем "SQL Server Management Studio" (Рис. 5.7):
Рис 5.7. Запуск "SQL Server Management Studio"
Жмем кнопку "New Query" (Рис 5.8):
Рис 5.8. Создание нового запроса в SSMS
Копируем t-sql из листинга 1:
USE [master]
GO
IF EXISTS(SELECT 1 FROM sys.databases WHERE name='BookShop')
DROP DATABASE [BookShop]
CREATE DATABASE [BookShop]
GO
USE [BookShop]
GO
CREATE TABLE [Authors]
(
Id int IDENTITY(1,1) NOT NULL,
Name nvarchar(150) NULL
)
GO
CREATE TABLE [Books]
(
Id int IDENTITY(1,1) NOT NULL,
Name nvarchar(250) NOT NULL,
Description nvarchar(500) NULL,
IdPublisher int NOT NULL,
Price float NOT NULL,
PublishedAt datetime NOT NULL
)
GO
CREATE TABLE [BooksToAuthors]
(
IdBook int NOT NULL,
IdAuthor int NOT NULL
)
GO
CREATE TABLE [Publishers]
(
Id int IDENTITY(1,1) NOT NULL,
Name nvarchar(150) NOT NULL
)
GO
ALTER TABLE Authors ADD CONSTRAINT PK_Authors
PRIMARY KEY (Id)
GO
ALTER TABLE Books ADD CONSTRAINT PK_Books
PRIMARY KEY (Id)
GO
ALTER TABLE BooksToAuthors ADD CONSTRAINT PK_BooksToAuthors
PRIMARY KEY (IdBook,IdAuthor)
GO
ALTER TABLE Publishers ADD CONSTRAINT PK_Publishers
PRIMARY KEY (Id)
GO
ALTER TABLE Books ADD CONSTRAINT FK_Books_Publishers
FOREIGN KEY (IdPublisher) REFERENCES Publishers(Id)
GO
ALTER TABLE BooksToAuthors ADD CONSTRAINT FK_BooksToAuthors_Books
FOREIGN KEY (IdBook) REFERENCES Books(Id)
GO
ALTER TABLE BooksToAuthors ADD CONSTRAINT FK_BooksToAuthors_Author
FOREIGN KEY (IdAuthor) REFERENCES Authors(Id)
GO
Листинг 1. Скрипт для создания схемы базы данных
Жмем кнопку "Execute" (Рис. 5.9):
Рис 5.9 Запуск запроса
В результате в окне сообщения должны получить "Command(s) completed successfully".
Следующий шаг - заполнение только что созданной базы данных. Для этого выполняем запрос из листинга 2.
USE [BookShop]
GO
DELETE FROM BooksToAuthors
DELETE FROM Books
DELETE FROM Authors
DELETE FROM Publishers
INSERT INTO Authors (Name) VALUES ('Endrew Troelsen')
INSERT INTO Authors (Name) VALUES ('Matthew MacDonald')
INSERT INTO Authors (Name) VALUES ('Mario Szpuszta')
INSERT INTO Authors (Name) VALUES ('Eugene Kartsev')
INSERT INTO Publishers (Name) VALUES ('Apress')
INSERT INTO Publishers (Name) VALUES ('Williamspublishing')
INSERT INTO Publishers (Name) VALUES ('WROX')
INSERT INTO Books (Name, Description, IdPublisher, Price, PublishedAt)
VALUES ('Pro ASP.NET 3.5 in C#2008', '', (SELECT Id FROM Publishers WHERE Name='Apress'), '350.9900', GETDATE())
INSERT INTO Books (Name, Description, IdPublisher, Price, PublishedAt)
VALUES ('Another Interesting Book about .NET', '', (SELECT Id FROM Publishers WHERE Name='WROX'), '199.10', GETDATE())
INSERT INTO Books (Name, Description, IdPublisher, Price, PublishedAt)
VALUES ('Silverlight 2.0', '', (SELECT Id FROM Publishers WHERE Name='Williamspublishing'), '230.50', GETDATE())
INSERT INTO Books (Name, Description, IdPublisher, Price, PublishedAt)
VALUES ('Mu-mu, the beginning', '', (SELECT Id FROM Publishers WHERE Name='Apress'), '1.99', GETDATE())
INSERT INTO BooksToAuthors (IdBook, IdAuthor)
VALUES ((SELECT Id FROM Books WHERE Name='Pro ASP.NET 3.5 in C#2008'), (SELECT Id FROM Authors WHERE Name='Matthew MacDonald'))
INSERT INTO BooksToAuthors (IdBook, IdAuthor)
VALUES ((SELECT Id FROM Books WHERE Name='Pro ASP.NET 3.5 in C#2008'), (SELECT Id FROM Authors WHERE Name='Mario Szpuszta'))
INSERT INTO BooksToAuthors (IdBook, IdAuthor)
VALUES ((SELECT Id FROM Books WHERE Name='Another Interesting Book about .NET'), (SELECT Id FROM Authors WHERE Name='Endrew Troelsen'))
INSERT INTO BooksToAuthors (IdBook, IdAuthor)
VALUES ((SELECT Id FROM Books WHERE Name='Silverlight 2.0'), (SELECT Id FROM Authors WHERE Name='Matthew MacDonald'))
INSERT INTO BooksToAuthors (IdBook, IdAuthor)
VALUES ((SELECT Id FROM Books WHERE Name='Mu-mu, the beginning'), (SELECT Id FROM Authors WHERE Name='Eugene Kartsev'))
Листинг 2. Скрипт для наполнения БД тестовыми данными
Итак, тестовая база данных готова. Можно приступать к созданию сайта на основе ASP.NET Dynamic Data, но прежде следует сделать несколько замечаний.
Очень важно, чтобы структура базы данных была правильная (под правильностью понимается соответствие 3НФ). Данное требование особо остро ощущается при создании приложений на основании Dynamic Data или приложений, использующих автоматически сгенерированную схему классов LINQ2SQL. Но обо всем по порядку.