Разработка базы данных

Автор работы: Пользователь скрыл имя, 23 Сентября 2013 в 11:04, курсовая работа

Краткое описание

Structured Query Language представляет собой непроцедурный язык, используемый для управления данными реляционных СУБД. Термин <непроцедурный> означает, что на данном языке можно сформулировать, что нужно сделать с данными, но нельзя проинструктировать, как именно это следует сделать.

Прикрепленные файлы: 1 файл

Разработка База данных.docx

— 334.04 Кб (Скачать документ)

Все операторы языков программирования, заключенные между символами  <%...%> будут обрабатываться на компьютере веб-сервера. Остальные операторы будут переданы на выполнение браузеру пользователя.

Нет необходимости в том, чтобы СУБД и веб-сервер находились на одной и той же машине. Когда  мы задаем имя источника данных ODBC, вы можете выбрать базу данных, которая находится на другом компьютере и доступна с компьютера веб-сервера.

Объектная модель ADO, является надстройкой к объектной модели OLE DB. Объект Connection, представляющий соединение с источником данных, - это первый объект ADO, который необходимо создать и который является основой для всех остальных.

Рис.2.6. объектная модель ADO

Имея соединение, разработчик  может создать один или несколько  наборов записей (объект RecordSet) и одну или несколько команд (объект Command). Все ошибки, которые генерируются в процессе создания любого из этих объектов и работы с ним, ADO будет помещать в специальную коллекцию Errors. Каждый объект RecordSet имеет коллекцию полей (Fields); каждое поле (объект  Field) в этой коллекции соответствует столбцу в наборе записей. Кроме того, каждая команда имеет коллекцию параметров (Parameters), элементы которой представляют переданные команде параметры.

После создания таблиц можно  приступить к манипуляциям с данными: вводить данные в таблицы, извлекать  их из таблиц, проверять и изменять структуру таблиц.  Для манипулирования  структурой таблиц используются команды  определения данных рассмотренные  выше, а для манипулирования данными  – объекты DataSet или DataReader платформы .NET.

Объект DataSet обычно представляет подмножество записей, которые извлекаются из базы данных. Оно концептуально аналогично таблице (а в некоторых случаях – группе связанных полей), но также содержит несколько важных собственных свойств. Объекты DataSet можно легко представить в виде XML-данных и использовать для передачи удаленных данных (как например, при передаче результатов выполнения запроса от сервера к клиенту или при обмене данными между двумя серверами). В Visual Basic.NET объекты DataSet не ограничены только сохранением извлеченных данных, он может использоваться для управления статическими данными в XML-документе или файле конфигурации, либо для управления динамическими данными, созданными на основе пользовательских данных в более сложных ситуациях.

Как и при работе с технологией  ADO, в Visual Basic.NET и ADO.NET можно использовать подключенные и неподключенные объекты DataSet. Неподключенный объект DataSet с данными передаётся приложению, соединение с базой данных закрывается, а базе данных ничего не известно о манипуляциях с этими данными до тех пор, пока приложение вновь не обратится к базе данных. Если пользователь открывает форму и щелкает на кнопке для обновления данных. В таком случае приложение должно снова соединиться с базой данных и выполнить код изменения данных. В тоже время с помощью подключенного объекта DataSet используемые данные «блокируются» и все изменения мгновенно воспроизводятся в базе данных.

Объект  DataReader работает аналогично объекту DataSet, но обладает другими возможностями и характеристиками производительности. Одно из отличий отражено в его названии: объект DataReader считывает данные, т.е. он предоставляет доступ к данным только для чтения. Для объекта DataReader также не предусмотрен простой способ представления данных в формате XML.

Данные операторы являются ведущими для работы в WEB-приложениях.

Назначение этого приложения состоит в том, чтобы продемонстрировать создание и обработку набора данных. Для того чтобы показать работу ASP.NET предложено два вида работы веб-приложения. Первый вид – как приложение работы с существующей базой данных в режиме пользователя. Второй вид – приложение для тестирования знаний sql-запросов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Инфологическая  модель данных

Цель инфологического моделирования  – обеспечение наиболее естественных для человека способов сбора и  представления той информации, которую  предполагается хранить в создаваемой  базе данных. Поэтому инфологическую модель данных пытаются строить по аналогии с естественным языком. Основными  конструктивными элементами инфологических моделей являются сущности, связи  между ними и их свойства (атрибуты).

 

Материк

 

Вулкан

 

Регион

 

Код_материка

 

Код_материка

 

Код_страны

Название

 

Код_вулкана

Код_региона

 

Площадь

 

Наименование

 

Наименование

           
         

Город

 

Остров

 

Море

 

Код_региона

 

Код_материка

 

Код_океана

 

Код_города

 

Код_острова

 

Код_материка

 

Наименование

 

Наименование

 

Код_моря

 

Численность_населения

     

Наименование

   
 

Гора

 

Площадь

   
 

Код_материка

       

Код_горы

 

Страна

   
 

Наименование

 

Код_материка

   
 

высота над уровнем моря

 

Код_страны

   
     

Наименование

   
 

Океан

 

Столица

   
 

Код_океана

 

Форма_правления

   
 

Наименование

 

Площадь_страны

   
     

Численность населения

   

 

Рис. 3. 1 Инфологическая модель.

Логическая модель данных

Девять сущностей находятся  в третьей нормальной форме, т.е. все атрибуты сущностей содержат атомарные значения (значения в домене не являются ни списками, ни множествами  простых или сложных значений); каждый не ключевой атрибут полностью  зависит от первичного ключа; никакой  не ключевой атрибут не зависит от не ключевого атрибута.

Рис.3.2. Логическая схема

 

Физическая модель базы данных

Создадим базу данных «Колумб»

USE [master]

GO

 

/****** Object:  Database [columbus]    Script Date: 05/12/2013 00:21:08 ******/

CREATE DATABASE [columbus] ON  PRIMARY

( NAME = N'columbus', FILENAME = N'с:\geogragia\columbus.mdf' , SIZE = 4096KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )

LOG ON

( NAME = N'columbus_log', FILENAME = N'с:\geogragia\columbus_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)

GO

Затем создадим таблицы:

Таблицу «Материк»

USE [columbus]

GO

 

/****** Object:  Table [dbo].[materik]    Script Date: 05/12/2013 00:24:41 ******/

SET ANSI_NULLS ON

GO

 

SET QUOTED_IDENTIFIER ON

GO

 

CREATE TABLE [dbo].[materik](

[kod_materik] [numeric](18, 0) NOT NULL,

[naimenovanie] [nvarchar](50) NOT NULL,

[ploshad] [nvarchar](50) NULL,

 CONSTRAINT [PK_materik] PRIMARY KEY CLUSTERED

(

[kod_materik] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]

 

GO

Заполним таблицу «Материк»

NSERT INTO [columbus].[dbo].[materik]

           ([kod_materik]

           ,[naimenovanie]

           ,[ploshad])

     VALUES

           (1, 'Awstralia','7 692 024 km');

INSERT INTO [columbus].[dbo].[materik]

           ([kod_materik]

           ,[naimenovanie]

           ,[ploshad])

     VALUES

           (2, 'Asia','43 400 000 km');

INSERT INTO [columbus].[dbo].[materik]

           ([kod_materik]

           ,[naimenovanie]

           ,[ploshad])

     VALUES

           (3, 'Afrika','29 200 000 km');

INSERT INTO [columbus].[dbo].[materik]

           ([kod_materik]

           ,[naimenovanie]

           ,[ploshad])

     VALUES

           (4, 'Europa','10 200 000 km');

INSERT INTO [columbus].[dbo].[materik]

           ([kod_materik]

           ,[naimenovanie]

           ,[ploshad])

     VALUES

           (5, 'Okeania','1 300 000 km');

INSERT INTO [columbus].[dbo].[materik]

           ([kod_materik]

           ,[naimenovanie]

           ,[ploshad])

     VALUES

           (6, 'North America','24 250 000 km');

INSERT INTO [columbus].[dbo].[materik]

           ([kod_materik]

           ,[naimenovanie]

           ,[ploshad])

     VALUES

           (7, 'South America','17 800 000 km');

GO

 

Таблица «Океан»

CREATE TABLE [dbo].[okean](

[kod_okean] [numeric](18, 0) NOT NULL,

[naimenowanie] [nvarchar](50) NOT NULL,

 CONSTRAINT [PK_okean] PRIMARY KEY CLUSTERED

(

[kod_okean] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]

 

GO

Заполним таблицу «Океан»

INSERT INTO [columbus].[dbo].[okean]([kod_okean],[naimenowanie])

     VALUES (1, 'Атлантический океан');

INSERT INTO [columbus].[dbo].[okean]([kod_okean],[naimenowanie])

     VALUES (2, 'Индийсий океан');

INSERT INTO [columbus].[dbo].[okean]([kod_okean],[naimenowanie])

     VALUES (3, 'Северный Ледовитый океан');

INSERT INTO [columbus].[dbo].[okean]([kod_okean],[naimenowanie])

     VALUES (4, 'Тихий океан');

GO

Создадим таблицу «Гора»

CREATE TABLE [dbo].[gora](

[kod_materik] [numeric](18, 0) NOT NULL,

[kod_gora] [numeric](18, 0) NOT NULL,

[naimenovanie] [nvarchar](50) NOT NULL,

[wisota] [nchar](10) NULL

) ON [PRIMARY]

 

Таблица. «гора»

Создадим таблицу «город»

CREATE TABLE [dbo].[gorod](

[kod_region] [numeric](18, 0) NOT NULL,

[kod_gorod] [numeric](18, 0) NOT NULL,

[naimenovanie] [nvarchar](50) NOT NULL,

[chislennost] [nvarchar](50) NULL,

 CONSTRAINT [PK_gorod] PRIMARY KEY CLUSTERED

(

[kod_gorod] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]

Таблица «город»

Создадим таблицу «море»

CREATE TABLE [dbo].[more](

[kod_okean] [numeric](18, 0) NOT NULL,

[kod_materik] [numeric](18, 0) NOT NULL,

[kod_more] [numeric](18, 0) NOT NULL,

[naimenovanie] [nvarchar](50) NOT NULL,

[ploshad] [nvarchar](50) NULL,

 CONSTRAINT [PK_more] PRIMARY KEY CLUSTERED

(

[kod_more] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]

Создадим таблицу «остров»

CREATE TABLE [dbo].[ostrow](

[kod_materik] [numeric](18, 0) NOT NULL,

[kod_ostrov] [numeric](18, 0) NOT NULL,

[naimenovanie] [nvarchar](50) NOT NULL,

 CONSTRAINT [PK_ostrow] PRIMARY KEY CLUSTERED

(

[kod_ostrov] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]

 

Создадим таблицу «Регион»

CREATE TABLE [dbo].[region](

[kod_strani] [numeric](18, 0) NOT NULL,

[kod_region] [numeric](18, 0) NOT NULL,

[naimenovanie] [nvarchar](50) NULL,

 CONSTRAINT [PK_region] PRIMARY KEY CLUSTERED

(

[kod_region] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]

 

Создадим таблицу «страна»

CREATE TABLE [dbo].[strana](

[kod_materik] [numeric](18, 0) NOT NULL,

[kod_strana] [numeric](18, 0) NOT NULL,

[naimenovanie] [nvarchar](50) NOT NULL,

[stolica] [nvarchar](50) NOT NULL,

[forma_pravlenia] [nvarchar](50) NULL,

[chislenost] [nvarchar](50) NULL,

 CONSTRAINT [PK_strana] PRIMARY KEY CLUSTERED

(

[kod_strana] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]

Создадим таблицу «Вудкан»

CREATE TABLE [dbo].[vulkan](

[kod_materik] [numeric](18, 0) NOT NULL,

[kod_vulkan] [numeric](18, 0) NOT NULL,

[naimenovanie] [nvarchar](50) NOT NULL,

 CONSTRAINT [PK_vulkan] PRIMARY KEY CLUSTERED

(

[kod_vulkan] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]

 

Создание представления

Создадим представление «Гора»

Рис. Создание представления

Создание таблицы в  БД средствами ASP.

На страницу управления кнопку серверный контрол <asp:Button и подвязываем её на обработчик события CreateTable:

Protected void CreateTable(object sender, EventArgs e)

{

Using (SqlConnection con =

    New SqlConnection(ConfigurationManager.

            ConnectionStrings[“myConnectionString”].

           ConnectionString))

{

        String query = “CREATE TABLE Vulkans” +

       “(id UniqueIdentifier CONSTRAINT PKeyid PRIMARY KEY,” +

      “vulkansName NVARCHAR(30))”;

 

      SqlCommand sqlCom = new SqlCommand(query, con);

 

     try

     {

con.Open();

sqlCom.ExecuteNonQuery();

con.Close();

Result.Text = “Таблица создана”;

    }

   Catch { Result.Text = “Таблица не создана”;}

}

}

Метод очень прост. Переменная query содержит инструкцию создания таблицы с 2 полями:

  1. Id- первичный ключ, тип Guid
  2. vulkansName – наименование вулканической горы, типа string.

Выполнение запроса к  БД происходит через обычный метод  ExecuteNonQuery();. Если в ходе выполнения метода возникает exception, то мы ловим его в блоке catch.

 

 

Использование представлений  (View)

Представление (View) виртуальная таблица, которая формируется на основе запроса Select. Раз это таблица, хотя и виртуальная, к ней можно написать запрос, как и к простой таблице. Но обязательно нужно учитывать, что сначала создается представление, а потом будет выполняться наш запрос который направлен к представлению.

На форме  размещаем одну кнопку и датагрид. Создадим класс CountryCitys:

Class CountryCitys

{

Public string Country {get; private set;}

Public string Region {get; private set;}

Public string City {get; private set;}

Public CountryCitys(string country, string region, string city)

{

Country = country;

Region = region;

City = city;

}

Теперь в  обработчике нажатия по кнопке впишем следующий код:

Private void button1_Click(object sender, EventArgs e)

{

//строка соединения с БД

String connectionString =

    @”Data Source=Columbus;

Initial Catalog=Geographiya;

Integrated Security=true;”;

//запрос

String query = @”Select ‘В государстве  ‘,  [Country],

‘в регионе ‘ , [Region],  ‘ города ‘ , [City]

From CountryView”;

//объект соединения с БД

SqlConnection con =

new SqlConnection(connectionString);

//создаем команду

SqlCommand cmd=

new SqlCommand(query, con);

try

{

con.Open();

  using (SqlDataReader dr = cmd.ExecuteReader())  

                  {                     

                  List<Country> list = new List<Country>();  

                      if (dr.HasRows)  

                      {  

                          while (dr.Read())  

                          {  

                              list.Add(new Country(  

                                      dr[0].ToString() +   

                                      dr[1].ToString(),  

                                        

                                      dr[2].ToString() +   

                                      dr[3].ToString(),

 

    dr[4].ToString()+

    dr[5].ToString() 

                                      )  

                                  );  

                          }  

                      }  

    

                      if (list.Count > 0)  

Информация о работе Разработка базы данных