Автор работы: Пользователь скрыл имя, 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
Список использованных источников………………...…………………………..
Нормальная форма Бойса-Кодда требует, чтобы в таблице был только один потенциальный первичный ключ. Чаще всего у таблиц, находящихся в третьей нормальной форме, так и бывает, но не всегда. Если обнаружился второй столбец (комбинация столбцов), позволяющий однозначно идентифицировать строку, то для приведения к нормальной форме Бойса-Кодда такие данные надо вынести в отдельную таблицу.
Следуя данным руководствам, была создана следующая диаграмма:
Рисунок 8 - Даталогическая модель
Теперь мы можем заполнить некоторые таблицы, такие как Рекламные щиты, Фирмы-клиенты и т.д. Это также можно сделать средствами Management Studio:
Рисунок 9 - Заполнение таблиц средствами Management Studio
Представления позволяют объединять несколько таблиц в одну и фильтровать их по предопределенному фильтру. К примеру, есть таблица [Договоры с фирмами клиентами], но выборка из этой таблицы не даст полной информации о том рекламном объявлении, которое сейчас расположено на щите. Но можно согласно полю [№ рекламы] присоединить таблицу [Рекламные объявления], в которой есть более полная информация. На рисунке 9 изображено представление, отображающее полною информацию о рекламных объявлениях и том, на каком щите они расположены. Конструктор представлений позволяет, не вникая детально в синтаксис SQL создавать необходимые объединения и фильтрацию таблиц.
Рисунок 10 - Конструктор представлений
В базе данных так же реализованы запросы: по конструкции щитов.
Рисунок 11 - Результат запроса
И запрос на нахождение договоров с фирмами-клиентами за определенный промежуток времени.
Рисунок 12 - Результат запроса
Триггер — это особая разновидность хранимой процедуры, выполняемая автоматически при возникновении события на сервере базы данных. Триггеры языка обработки данных выполняются по событиям, вызванным попыткой пользователя изменить данные с помощью языка обработки данных. Событиями 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 - Ассоциация имени входа на сервер и пользователя БД
Заключение
В данной курсовой работе была создана база данных «Рекламное агентство», которая содержит информацию о работе рекламного агентства по размещению рекламы на уличных щитах. В ходе выполнения данной курсовой работы были выполнены все пункты задания для курсовой работы:
В ходе проектирования и реализации БД были получены знания об основах работы с СУБД SQL Server и создание клиентского приложения, работающего с базой данных на языке С#.
Список использованных источников
Приложение А
Листинг программы
Главная форма:
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 договорыСФирмамиклиентамиToolS
{ДоговорыСКлиентами f = new ДоговорыСКлиентами();
f.ShowDialog();}
private
void договорыСФирмамиустановщикамиT
{ДоговорыСУстановщиками f = new ДоговорыСУстановщиками();
f.ShowDialog();}
private
void рекламныеОбъявленияToolStripMe
{РекламныеОбъявления f = new РекламныеОбъявления();
f.ShowDialog();}
private
void рекламныеЩитыToolStripMenuItem
{РекламныеЩиты f = new РекламныеЩиты();
f.ShowDialog();}
private
void фирмыклиентыToolStripMenuItem_
{ФирмыКлиенты f = new ФирмыКлиенты();
f.ShowDialog();}
private
void фирмыустановщикиToolStripMenuI
{ФирмыУстановщики f = new ФирмыУстановщики();
f.ShowDialog();}
private
void договорыСКлиентамиToolStripMen
{Запрос1 f = new Запрос1();
f.ShowDialog();}
private
void ширинаЩитовToolStripMenuItem_
{Запрос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.договоры_с_фирмами_
}
}
}
Запрос 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;
// создание запроса
SqlCommand myCom = conn.CreateCommand();
// текст запроса
myCom.CommandText =
@"SELECT [Договоры с фирмами-клиентами]
FROM [Договоры с фирмами-клиентами]
WHERE [Договоры с фирмами-клиентами]
// переменные используемые в
myCom.Parameters.Add("@Start", SqlDbType.DateTime);
myCom.Parameters.Add("@End", SqlDbType.DateTime);
// инициализация значениями
myCom.Parameters["@Start"].Val
myCom.Parameters["@End"].Value = dateTimePicker2.Value.Date;
// непосредственно объект
SqlDataAdapter adapter = new SqlDataAdapter(myCom);
// кеш таблиц
DataSet ds = new DataSet();
// заполнение таблиц DataSet
adapter.Fill(ds);
// подключение необходимо
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;
SqlCommand myCom2 = conn2.CreateCommand();
myCom2.CommandText =
@"SELECT [Рекламные щиты].[№ щита], [Рекламные щиты].Имя, [Рекламные щиты].Имя, [Рекламные щиты].Ширина, [Рекламные щиты].Высота, [Рекламные щиты].[Название конструкции]
FROM [Рекламные щиты]
WHERE ((([Рекламные щиты].[Название
Информация о работе Разработка базы данных предметной области