Разработка базы данных предметной области

Автор работы: Пользователь скрыл имя, 22 Декабря 2014 в 13:45, курсовая работа

Описание работы

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

Содержание работы

Ведение……………………………….……………………….………………..…...6
1 Схема информационных потоков ДПО……………………………....…….....7
2 Диаграммы: IDEF0, IDEF3, DFD…....……………………………………..….8
3 Информационно-логическая модель предметной области по нотациям Ричарда Баркера ………………….....………………………………...…………..11
4 Даталогическая модель реляционной БД в виде диаграммы схемы отношений ………………………………………………………………….……..13
5 Запросы к БД на уровне представлений и параметрические запросы на уровне функций пользователя и хранимых процедур..…………………………15
6 Мероприятия по защите (описание ролей) и обеспечению целостности (описание триггеров) базы данных………...…………………………………….17
6.1 Триггеры…………………………………………………………………….17
6.2 Роли………………………………………………………………………….19
7 Приложение интерфейса для базы данных на языке программирования С# в программной среде Visual Studio…………………………………………………22
8 Инструкцию по администрированию и пользованию БД……....…………...24
Заключение………………………………………………………………………..26
Список использованных источников………………...…………………………..

Файлы: 1 файл

Курсовая работа.doc

— 1.24 Мб (Скачать файл)

Нормальная форма Бойса-Кодда требует, чтобы в таблице был только один потенциальный первичный ключ. Чаще всего у таблиц, находящихся в третьей нормальной форме, так и бывает, но не всегда. Если обнаружился второй столбец (комбинация столбцов), позволяющий однозначно идентифицировать строку, то для приведения к нормальной форме Бойса-Кодда такие данные надо вынести в отдельную таблицу.

Следуя данным руководствам, была создана следующая диаграмма:

Рисунок 8 - Даталогическая модель

  1. Запросы к БД на уровне представлений и параметрические запросы на уровне функций пользователя и хранимых процедур

Теперь мы можем заполнить некоторые таблицы, такие как Рекламные щиты, Фирмы-клиенты и т.д. Это также можно сделать средствами Management Studio:

Рисунок 9 - Заполнение таблиц средствами Management Studio

Представления позволяют объединять несколько таблиц в одну и фильтровать их по предопределенному фильтру. К примеру, есть таблица [Договоры с фирмами клиентами], но выборка из этой таблицы не даст полной информации о том рекламном объявлении, которое сейчас расположено на щите. Но можно согласно полю [№ рекламы] присоединить таблицу [Рекламные объявления], в которой есть более полная информация. На рисунке 9 изображено представление, отображающее полною информацию о рекламных объявлениях и том, на каком щите они расположены. Конструктор представлений позволяет, не вникая детально в синтаксис SQL создавать необходимые объединения и фильтрацию таблиц.

Рисунок 10 - Конструктор представлений

В базе данных так же реализованы запросы: по конструкции щитов.

Рисунок 11 - Результат запроса

И запрос на нахождение договоров с фирмами-клиентами за определенный промежуток времени.

Рисунок 12 - Результат запроса

 

  1. Мероприятия по защите (описание ролей) и обеспечению целостности (описание триггеров) базы данных

 

    1. Триггеры

 

Триггер — это особая разновидность хранимой процедуры, выполняемая автоматически при возникновении события на сервере базы данных. Триггеры языка обработки данных выполняются по событиям, вызванным попыткой пользователя изменить данные с помощью языка обработки данных. Событиями DML являются процедуры INSERT, UPDATE или DELETE, применяемые к таблице или представлению. Эти триггеры срабатывают при запуске любого допустимого события независимо от того, влияет ли оно на какие-либо строки таблицы.

Целостность базы данных  — соответствие имеющейся в базе данных информации её внутренней логике, структуре и всем явно заданным правилам. Каждое правило, налагающее некоторое ограничение на возможное состояние базы данных, называется ограничением целостности.

Целостность БД не гарантирует достоверности содержащейся в ней информации, но обеспечивает, по крайней мере, правдоподобность этой информации, отвергая заведомо невероятные, невозможные значения.

Создадим триггер для таблицы Договоры с фирмами-клиентами. Установим, что стоимость договора не может быть меньше 2000 руб.

Рисунок 13 - Триггер ограничения стоимости договора

Теперь при добавлении договора стоимостью меньше 2000 будет выводиться ошибка.

Рисунок 14 - Ошибка в стоимости договора

Фирма не размещает рекламу на срок более одного полугода. Если требуется большее время — договор необходимо перезаключать. Создадим триггер ограничивающий срок между датой размещения и датой снятия рекламного объявления.

 

Рисунок 15 - Триггер ограничения срока размещения рекламы

Теперь при добавлении нового договора, в котором срок размещения рекламы более полугода будет выводиться ошибка.

 

Рисунок 16 - Ошибка в сроке размещения рекламы

6.2 Роли

Для примера настройки в сети разработчика создан тестовый пользователь на компьютере LENOVO1234, с именем “1”. На сервере необходимо создать имя входа для него.

Рисунок 17 - Создание пользователя базы данных

Рисунок 18 - Роли сервера тестового пользователя

Далее необходимо добавить пользователя в базу данных “Рекламное агентство”, и тоже задать роль.

Рисунок 19 - Создание пользователя базы данных

Пользователь базы данных ассоциируется с ранее созданным тестовым именем входа на сервер. Далее создаем роль Менеджер

Рисунок 20 - Настройка роли менеджера

Роль Менеджер разрешает выборку и обновление данных рекламных щитов.

 

 

7. Приложение интерфейса базы данных

Приложения создано с помощью Microsoft Visual Studio 2010 на языке программирования С#.

Рисунок 21 - Главная форма программы

 

Рисунок 22 - Пример работы программы - редактор таблицы

Рисунок 23 - Пример работы программы  - запрос «Договоры с клиентами»

 

Рисунок 24 - Пример работы программы - запрос «Типы щитов»

 

 

 

8. Инструкция по администрированию и пользованию БД

 

Для использования разработанной базы данных необходимо присоединить ее к SQL серверу.

Рисунок 25 - Присоединение базы данных к SQL серверу

Затем необходимо выбрать расположение файла БД Рекламное агентство.

Рисунок 26 - Присоединение файла базы данных к SQL серверу

Далее необходимо настроить Имена входа на SQL сервер, выбрав пользователей либо группу из ActiveDirectory, и ассоциировать этого пользователя с соответствующим пользователем БД Рекламное агентство.

Рисунок 27 - Добавление имени входа на SQL сервер

 

Рисунок 28 - Ассоциация имени входа на сервер и пользователя БД

 

 

 

Заключение

В данной курсовой работе была создана база данных «Рекламное агентство», которая содержит информацию о работе рекламного агентства по размещению рекламы на уличных щитах. В ходе выполнения данной курсовой работы были выполнены все пункты задания для курсовой работы:

  • анализ предметной области;
  • выделение сущностей и атрибутов;
  • установление связей между сущностями;
  • проектирование логического и физического уровней, используя схему информационных потоков, диаграммы - IDEF0, IDEF3, DFD и информационно-логическую модель по нотациям Ричарда Баркера;
  • реализация базы данных в СУБД SQL Server;
  • организация бизнес-логики посредством представлений, хранимых процедур, триггеров, а также заполнение и тестирование БД;
  • создание клиентского приложения, работающего с базой данных.

В ходе проектирования и реализации БД были получены знания об основах работы с СУБД SQL Server и создание клиентского приложения, работающего с базой данных на языке С#.

 

Список использованных источников

    1. Карпова Т.С. Базы данных: модели, разработка, реализация / Т.С. Карпова. – СПб.: Питер, 2001. – 304 с. – ISBN 5-272-00278-4.
  1. Корнеев В.В. Базы данных. Интеллектуальная обработка информации / В.В. Корнеев, А.Ф. Гареев, С.В. Васютин, В.В. Райх. – М.: Издатель Молгачева С.В., Издательство Нолидж, 2001, - 496 с.: ил. ISBN 5-89251-100-6.
  2. Петров В.Н. Информационные системы / В.Н. Петров. – СПб.: Питер, 2002. – 688 с. – ISBN 5-318-00561-6.
  3. Саак А.Э. Информационные технологии управления: учебник для вузов / А.Э. Саак, Е.В. Пахомов, В.Н. Тюшняков. – СПб.: Питер, 2005. – 320 с. ISBN 5-469-00412-0.
  4. Хомоненко А.Д. Базы данных: учебник для высших учебных заведений / А.Д. Хомоненко, В.М. Цыганков, М.Г. Мальцев. – 4-е изд., доп. и перераб. – СПб.: КОРОНА принт, 2004. – 736 с. – ISBN 5-7931-0284-1.
  5. Райордан Р. Основы реляционных баз данных/Пер, с англ. - М.: Издательско-торговый дом «Русская Редакция», 2001. - 384 с.
  6. Майкл Дж. Хернандес, Джон Л. Вьескас SQL-запросы для простых смертных; К.: Диалектика; Издание 2-е, 1999. - 421 c.
  7. Резниченко В. Язык запросов SQL. Учебный курс; К.: Диалектика; Издание 1-е, 2004. - 298 с.
  8. Голицына, О.Л. Базы данных; Форум; Инфра-М, 2007. - 399 c.
  9. Ролланд Ф. Основные концепции баз данных. : Пер. с англ. - М.: Издательский дом "Вильяме", 2002. - 256 с.
  10. Кренке, Д. Теория и практика построения баз данных [текст] М.: Питер, издание 1-е, 2001, 800 с.

 

Приложение А

Листинг программы

Главная форма:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace База_данных_Реклама

{public partial class Form1 : Form

    {        public Form1()

        {InitializeComponent();   }

      

private void договорыСФирмамиклиентамиToolStripMenuItem_Click(object sender, EventArgs e)

        {ДоговорыСКлиентами f = new ДоговорыСКлиентами();

            f.ShowDialog();}

 

        private void договорыСФирмамиустановщикамиToolStripMenuItem_Click(object sender, EventArgs e)

        {ДоговорыСУстановщиками f = new ДоговорыСУстановщиками();

            f.ShowDialog();}

 

        private void рекламныеОбъявленияToolStripMenuItem_Click(object sender, EventArgs e)

        {РекламныеОбъявления f = new РекламныеОбъявления();

            f.ShowDialog();}

 

        private void рекламныеЩитыToolStripMenuItem_Click(object sender, EventArgs e)

        {РекламныеЩиты f = new РекламныеЩиты();

            f.ShowDialog();}

 

        private void фирмыклиентыToolStripMenuItem_Click(object sender, EventArgs e)

        {ФирмыКлиенты f = new ФирмыКлиенты();

            f.ShowDialog();}

 

        private void фирмыустановщикиToolStripMenuItem_Click(object sender, EventArgs e)

        {ФирмыУстановщики f = new ФирмыУстановщики();

            f.ShowDialog();}

 

        private void договорыСКлиентамиToolStripMenuItem_Click(object sender, EventArgs e)

        {Запрос1 f = new Запрос1();

            f.ShowDialog();}

 

        private void ширинаЩитовToolStripMenuItem_Click(object sender, EventArgs e)

        {Запрос2 f = new Запрос2();

            f.ShowDialog();  }

   }

}

 

Таблица «Договоры с клиентами»:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace База_данных_Реклама

{

    public partial class ДоговорыСКлиентами : Form

    {

        public ДоговорыСКлиентами()

        {

            InitializeComponent();

        }

 

        private void Form2_Load(object sender, EventArgs e)

        {

            // TODO: данная строка кода позволяет  загрузить данные в таблицу "рекламное_агенствоDataSet1._Договоры_с_фирмами_клиентами". При необходимости она может быть перемещена или удалена.

            this.договоры_с_фирмами_клиентамиTableAdapter.Fill(this.рекламное_агенствоDataSet1._Договоры_с_фирмами_клиентами);

 

        }

    }

}

 

 

 

Запрос 1:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

 

namespace База_данных_Реклама

{

    public partial class Запрос1 : Form

    {

        public Запрос1()

        {

            InitializeComponent();

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            // создание подключения

            SqlConnection conn = new SqlConnection("Data Source=LENOVO1234\\MSSQL;Initial Catalog=\"Рекламное агенство\";Integrated Security=True");

            // создание запроса

            SqlCommand myCom = conn.CreateCommand();

            // текст запроса

            myCom.CommandText =

            @"SELECT [Договоры с фирмами-клиентами].[№  договора с клиентом], [Договоры  с фирмами-клиентами].[№ фирмы-клиента], [Договоры с фирмами-клиентами].[Дата  заключения договора], [Договоры  с фирмами-клиентами].[Дата размещения], [Договоры с фирмами-клиентами].[Дата снятия]

            FROM [Договоры с фирмами-клиентами]

            WHERE [Договоры с фирмами-клиентами].[Дата  заключения договора]>@Start AND [Договоры  с фирмами-клиентами].[Дата заключения  договора]<@End";

            // переменные используемые в запросе

            myCom.Parameters.Add("@Start", SqlDbType.DateTime);

            myCom.Parameters.Add("@End", SqlDbType.DateTime);

            // инициализация значениями

            myCom.Parameters["@Start"].Value = dateTimePicker1.Value.Date;

            myCom.Parameters["@End"].Value = dateTimePicker2.Value.Date;

            // непосредственно объект манипулирующий  запросами

            SqlDataAdapter adapter = new SqlDataAdapter(myCom);

            // кеш таблиц

            DataSet ds = new DataSet();

            // заполнение таблиц DataSet

            adapter.Fill(ds);

            // подключение необходимо закрыть. Открытие происходит неявно при  заполнении DataSet

            conn.Close();

            // результат одна таблица, которую передаем в качестве источника DataGridView

            dataGridView1.DataSource = ds.Tables[0].DefaultView;

        }

    }

}

 

 

Запрос 2:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

 

namespace База_данных_Реклама

{

    public partial class Запрос2 : Form

    {

        public Запрос2()

        {

            InitializeComponent();

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            SqlConnection conn2 = new SqlConnection("Data Source=LENOVO1234\\MSSQL;Initial Catalog=\"Рекламное агенство\";Integrated Security=True");

            SqlCommand myCom2 = conn2.CreateCommand();

            myCom2.CommandText =

            @"SELECT [Рекламные щиты].[№ щита], [Рекламные щиты].Имя, [Рекламные  щиты].Имя, [Рекламные щиты].Ширина, [Рекламные  щиты].Высота, [Рекламные щиты].[Название  конструкции]

            FROM [Рекламные щиты]

            WHERE ((([Рекламные щиты].[Название конструкции])='Подвесной'));";

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