ВВЕДЕНИЕ 5
1 ПОСТРОЕНИЕ ИНФОЛОГИЧЕСКОЙ КОНЦЕПТУАЛЬНОЙ МОДЕЛИ 6
1.1 Анализ предметной области и выявление необходимого набора сущностей 6
1.2 Обоснование требуемого набора атрибутов для каждой сущности и выделение идентифицирующих атрибутов 8
1.3 Определение связей между объектами 8
1.4 Описание полученной модели на языке инфологического проектирования 9
2 ПОСТРОЕНИЕ СХЕМЫ РЕЛЯЦИОННОЙ БАЗЫ ДАННЫХ 11
2.1 Построение набора необходимых отношений базы данных 11
2.2 Задание первичных и внешних ключей определенных отношений 12
2.3 Приведение отношения БД к третьей нормальной форме 12
2.4 Определение ограничений целостности для внешних и первичных ключей отношений и для отношений в целом 13
2.5 Графическое представление связей между внешними и первичными ключами 13
3 СОЗДАНИЕ СПРОЕКТИРОВАННОЙ БАЗЫ ДАННЫХ 14
4 ЗАПИСЬ ВЫРАЖЕНИЙ НА ЯЗЫКЕ SQL 17
5 ВЫБОР И ОБОСНОВАНИЕ СРЕДСТВ РАЗРАБОТКИ ПРИЛОЖЕНИЯ 20
6 РЕАЛИЗАЦИЯ ЗАКОНЧЕННОГО ПРИЛОЖЕНИЯ, РАБОТАЮЩЕГО С СОЗДАННОЙ БАЗОЙ ДАННЫХ 21
6.1 Разработка и построение интерфейса главной и рабочих форм 21
6.2 Построение главного меню и кнопок панели инструментов 21
6.3 Выполнение программного кода в среде Microsoft Visual Studio 2010 21
6.4 Тестирование и отладка 22
ЗАКЛЮЧЕНИЕ 23
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 24
ПРИЛОЖЕНИЕ А – КОНЦЕПТУАЛЬНАЯ СХЕМА БД 25
ПРИЛОЖЕНИЕ В – СХЕМА РЕЛЯЦИОННОЙ БАЗЫ ДАННЫХ 27
ПРИЛОЖЕНИЕ С – ГЛАВНАЯ И РАБОЧИЕ ФОРМЫ ПРИЛОЖЕНИЯ 28
ПРИЛОЖЕНИЕ D – ЛИСТИНГ ПРОГРАММНОГО КОДА 32
Листинг 3 - Код поиска книги.
public partial class Form_main : Form
{
KursDBEntities context = new KursDBEntities();
int id_sell;
public Form_main(int id_seller)
{
InitializeComponent();
id_sell = id_seller;
dataGridView1.AutoGenerateColumns = false;
cB_autor.DataSource = context.Autor;
cB_autor.ValueMember = "ID_Autor";
cB_autor.DisplayMember = "FullName";
cB_autor.SelectedValue = "ID_Autor";
cB_genre.DataSource = context.Genre;
cB_genre.ValueMember = "ID_genre";
cB_genre.DisplayMember = "Name_of_genre";
cB_genre.SelectedValue = "ID_genre";
}
private void btn_search_Click(object sender, EventArgs e)
{
string book_name = tB_search.Text;
var id_auth = (int?)cB_autor.SelectedValue;
var id_genre = (int?)cB_genre.SelectedValue;
decimal min_price, max_price;
IQueryable<Book> books_query = context.Book;
if(!String.IsNullOrEmpty(book_name))
books_query = books_query.Where(x => x.Title.Contains(book_name));
if(id_genre.HasValue)
books_query = books_query.Where(x=>x.Genre.ID_genre == id_genre.Value);
if(id_auth.HasValue)
books_query = books_query.Where(x=>x.Autor.Any(y => y.ID_Autor == id_auth.Value));
if(decimal.TryParse(tB_min.Text, out min_price))
books_query = books_query.Where(x=>x.Price >= min_price);
if(decimal.TryParse(tB_max.Text, out max_price))
books_query = books_query.Where(x=>x.Price <= max_price);
dataGridView1.DataSource = books_query.ToList();
}
private void dataGridView1_DoubleClick(object sender, EventArgs e)
{
if (dataGridView1.CurrentRow != null)
{var book = (Book)dataGridView1.CurrentRow.DataBoundItem;
Orders ord = new Orders() { Book = book, Seller = context.Seller.Single(x=>x.ID_seller == id_sell), Price = book.Price };
Form_sale f_s = new Form_sale(book, ord);
if (f_s.ShowDialog() == DialogResult.OK)
{
context.AddToOrders(ord);
context.SaveChanges();
}}
else MessageBox.Show("Не выбрана ни одна книга!", "Ошибка проведения операции", MessageBoxButtons.OK, MessageBoxIcon.Error);
}}}
1. Хернандес М., Вьескас Д. SQL-запросы. Практическое руководство.: Пер. с англ. – М.: Лори, 2003. – 476 c.: ил.
2. Коннолли Т., Бегг К., Базы данных. Проектирование, реализация и сопровождение. Теория и практика.: Пер. с англ. – М.: Вильямс, 2003. – 155 с.: ил.
3. Шилдт Г. Полный справочник по SQL.: Пер. с англ. – М.: ООО “И.Д. Вильямс”, 2004. – 757 c.: ил.
4. Дейт К. Введение в системы баз данных //6-издание. – Киев: Диалектика, 1998. – 788 с.
5. Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс. – М.: «Вильямс», 2003. – 189 с.