Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Разработка клиент-серверных приложений баз данных с различными сценариям доступа к данным



 

В качестве базы данных для примера (рис. 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_AuthorsPRIMARY KEY (Id)GOALTER TABLE Books ADD CONSTRAINT PK_BooksPRIMARY KEY (Id)GOALTER TABLE BooksToAuthors ADD CONSTRAINT PK_BooksToAuthorsPRIMARY KEY (IdBook,IdAuthor)GOALTER TABLE Publishers ADD CONSTRAINT PK_PublishersPRIMARY KEY (Id)GO ALTER TABLE Books ADD CONSTRAINT FK_Books_PublishersFOREIGN KEY (IdPublisher) REFERENCES Publishers(Id)GO ALTER TABLE BooksToAuthors ADD CONSTRAINT FK_BooksToAuthors_BooksFOREIGN KEY (IdBook) REFERENCES Books(Id)GO ALTER TABLE BooksToAuthors ADD CONSTRAINT FK_BooksToAuthors_AuthorFOREIGN KEY (IdAuthor) REFERENCES Authors(Id)GO

Листинг 1. Скрипт для создания схемы базы данных

Жмем кнопку "Execute" (Рис. 5.9):

Рис 5.9 Запуск запроса

В результате в окне сообщения должны получить "Command(s) completed successfully".

Следующий шаг - заполнение только что созданной базы данных. Для этого выполняем запрос из листинга 2.

USE [BookShop]GO DELETE FROM BooksToAuthorsDELETE FROM BooksDELETE FROM AuthorsDELETE 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. Но обо всем по порядку.


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 278; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.008 с.)
Главная | Случайная страница | Обратная связь