Московский ордена Ленина, ордена Октябрьской Революции и ордена Трудового Красного Знамени. ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ им. Н. Э. БАУМАНА ______________________________________________________________________________ Домашнее задание «Ипподром» По курсу: Студент: Инструментальные средства САПР Гаврилов А. Е. (фамилия, инициалы) Руководитель: ИУ4-73 (индекс группы) Карпунин А. А. (фамилия, инициалы) дата сдачи отметка о защите Москва 2010 Оглавление Разработка логической информационной модели БД ................................................................... 3 Разработка физической информационной модели БД ................................................................... 3 Инсталляционный комплект в виде SQL кода ............................................................................... 4 Выводы ............................................................................................................................................... 5 Класс для работы с БД ...................................................................................................................... 6 Выводы ............................................................................................................................................... 7 Разработка логической информационной модели БД Была разработана логическая модель, отражающая взаимные зависимости между сущностями по определенным атрибутам. Структура логической модели представлена на рис. 1. Рисунок 1 – Логическая информационная модель Логический уровень модели данных является универсальным и никак не связан с конкретной реализацией СУБД. Разработка физической информационной модели БД В процессе создания физической информационной модели каждому атрибуту сущности был присвоен определенный тип данных в соответствии с возможностями выбранной СУБД SQL Server. Результатом работы является физическая информационная модель, представленная на рис. 2. Рисунок 2 - Физическая информационная модель Спецификация физической информационной модели представлена в табл. 1. Таблица 1 – Спецификация физической модели Наименование атрибута Таблица Тип данных b_id breed integer b_name breed varchar(15) j_id jockey integer j_name jockey nvarchar(30) j_sex jockey bit Null опция NOT NULL NULL NOT NULL NULL NULL j_age j_weight r_id r_name r_date r_type h_id h_name h_sex h_age h_speed h_price h_b_id rt_id rt_time rt_h_id rt_j_id rt_r_id jockey jockey round round round round horse horse horse horse horse horse horse round_time round_time round_time round_time round_time integer float integer nvarchar(30) datetime nvarchar(50) integer nvarchar(30) bit integer float float integer integer integer integer integer integer NULL NULL NOT NULL NULL NULL NULL NOT NULL NULL NULL NULL NULL NULL NULL NOT NULL NULL NULL NULL NULL Разработанная физическая модель соответствует третьей нормальной форме, поскольку каждый ее атрибут атомарен и находится в прямой зависимости от соответствующего первичного ключа. Инсталляционный комплект в виде SQL кода Для развертывания базы данных разработанной структуры на предприятии, был написан код SQL скриптов для создания объектов базы данных в СУБД Oracle. Листинг данного инсталляционного комплекта представлен в табл. 2. Таблица 2 – Листинг кода создания таблиц Код PROMPT Создание таблицы breed CREATE TABLE [dbo].[breed]( [b_id] [int] IDENTITY(1,1) NOT NULL, [b_name] [nvarchar](15) NULL ) ON [PRIMARY] PROMPT Создание таблицы jockey CREATE TABLE [dbo].[jockey]( [j_id] [int] IDENTITY(1,1) NOT NULL, [j_name] [nvarchar](30) NULL, [j_sex] [bit] NULL, [j_age] [int] NULL, [j_weight] [real] NULL ) ON [PRIMARY] PROMPT Создание таблицы round CREATE TABLE [dbo].[round]( [r_id] [int] IDENTITY(1,1) NOT NULL, [r_name] [nvarchar](30) NULL, [r_date] [datetime] NULL, [r_type] [nvarchar](50) NULL ) ON [PRIMARY] Комментарий Создание таблицы breed Создание таблицы jockey Создание таблицы round PROMPT Создание таблицы horse CREATE TABLE [dbo].[horse]( [h_id] [int] IDENTITY(1,1) NOT NULL, [h_name] [nvarchar](30) NULL, [h_sex] [bit] NULL, [h_b_id] [int] NULL, [h_age] [int] NULL, [h_speed] [real] NULL, [h_price] [real] NULL ) ON [PRIMARY] PROMPT Создание таблицы round_time CREATE TABLE [dbo].[round_time]( [rt_id] [int] IDENTITY(1,1) NOT NULL, [rt_r_id] [int] NULL, [rt_h_id] [int] NULL, [rt_j_id] [int] NULL, [rt_time] [int] NULL ) ON [PRIMARY] Создание таблицы horse Создание таблицы round_time Данные SQL скрипты используются в СУБД SQL Server для создания объектов баз данных. Выводы При разработке информационной модели выявлены следующие сущности: порода (breed), лошадь (horse), наездник (jockey), заезд (round) и запись результата (round_time). На их основе разработан словарь сущностей и атрибутов. На следующем шаге была разработана логическая, а затем физическая модель БД. Далее на основе физической модели БД были получены SQL-скрипты для СУБД SQL Server. Класс для работы с БД Листинг кода класса для работы с базой данных приведен ниже: package WindowsApplication1; import System.Data.*; import System.Data.OleDb.*; import System.Windows.Forms.*; import System.Data.SqlClient.*; import System.Data.SqlClient.SqlInfoMessageEventArgs.*; /** * Summary description for DataConnectClass. */ public class DataConnectClass { //Конструктор класса public DataConnectClass() { // // TODO: Add Constructor Logic here // } //Строка подключения. private String csConnStr; //Функция, которая заполняет строку подключения. private void set_csConnStr() { this.csConnStr = "Provider=SQLOLEDB;Data Source=1-ПК\\SQLEXPRESS;Initial Catalog=hippodrome;Integrated Security=SSPI;"; } //Функция, которая выполняет запрос SELECT и вазвращает таблицу типа DataTable. public DataTable csSelect(String requestQuery) { set_csConnStr(); OleDbDataAdapter db = new OleDbDataAdapter(requestQuery, csConnStr); DataTable tb = new DataTable(); db.Fill(tb); return tb; } //Функция, которая выполняет запрос CREATE/UPDATE/DELITE и ничего не возвращает. public void csVoidRequest(String requestQuery) { set_csConnStr(); //OleDbConnection – представитель класса Connection представляет соединение //с источником (базой) данных и обеспечивает подключение к базе данных. OleDbConnection con = new OleDbConnection(csConnStr); con.Open(); //"Команда" – выполнение различных действий над Базой Данных (ИСТОЧНИКЕ ДАННЫХ) //при использовании ОТКРЫТОГО СОЕДИНЕНИЯ. //Команда – объект, представляющий класс OleDbCommand OleDbCommand cm = new OleDbCommand(requestQuery, con); cm.ExecuteNonQuery(); con.Close(); } } В данном классе имеется конструктор класса DataConnectClass(), переменная csConnStr типа string – строка подключения, которая заполняется методом set_csConnStr(). Также имеется метод класса DataTable csSelect(), в котором выполняется запрос и возвращается объект типа DataTable. Для подключения и чтения данных используется объект DataAdapte, который после выполнения запроса методом Fill() заполняет объект типа DataTable. В методе csVoidRequest() класса выполняются запросы к базе данных, которые не ничего возвращают. В качестве поставщика данных в приложение (провайдера) выступает объект класса ADO Managed Provider (OleDb.NET Data Provider). Запрос выполняется с использованием методом класса OleDbCommand. Выводы При разработке класса работы с базой данных были описаны три метода set_csConnStr(), csSelect(), csVoidRequest() и описана одна переменная класса, хранящая строку подключения к базе данных.