База даних клієнтів і замовлень

ДНІПРОПЕТРОВСЬКА ОБЛАСНА РАДА ОБЛАСНИЙ КОМУНАЛЬНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД “ІНСТИТУТ ПІДПРИЄМНИЦТВА «СТРАТЕГІЯ»
КАФЕДРА КОМП’ЮТЕРНИХ ТА ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
Курсова робота
З дисципліни «Засоби СКБД»
На тему «База даних клієнтів і замовлень»
Студент групи С-05-51
Іощенко І.Г.
Керівник
Баранов Д.О.
м. Жовті Води 2008
Зміст
Вступ
1. Постановка задачі
2. Логічне проектування
3. Вибір СКБД та іншого програмного забезпечення
4. Фізичне проектування БД
4.1 Створення бази даних
4.2 Створення таблиць у базі даних
4.3 Визначення зв’язків
Висновки
Список використаної літератури
Додаток А
Додаток Б
Додаток В
Додаток Г
Додаток Д
Вступ
Бази даних виконують функцію систематизації знань. На основі цієї систематизації можуть створюватися нові знання. Так чи інакше, будь-яка база даних служить людині саме для опису подій, що відбулися у минулому, і на основі знання цих подій допомагає ухвалити те або інше рішення на майбутнє. База знань може бути побудована як мультимедійний довідник або як набір текстів і файлів іншого формату, проіндексованих за певними ознаками в базі даних.
База даних — це, перш за все, сховище об’єктів даних, тобто набору можливих понять або подій, що описуються базою даних, з можливістю пошуку цих об’єктів за ознаками. Невід’ємною межею бази даних є можливість скріплення об’єктів між собою. Базою даних можна вважати не тільки таблиці, що індексують файли із знаннями різних форматів, але і самі ці файли, тому, що вони є сховищами знань, що не типізуються, в такій базі даних. Основною ціллю курсового проекту є закріплення, систематизація та поглиблення знань, отриманих під час вивчення дисципліни, а також розвинення практичних навичок з аналізу об’єктів дослідження, проектування баз даних, розробки та налагодження програмного забезпечення для організації роботи зі спроектованою базою даних.
Основними задачами курсового проекту є:
поглиблення знань з теорії баз даних;
постановка задачі та розв’язання питань інформаційного забезпечення програми;
освоєння методів проектування БД для вирішення конкретних задач;
одержання уміння виконувати логічне і фізичне проектування баз даних;
освоєння інструментальних засобів проектування СКБД і створення програмного забезпечення для обробки даних БД;
оформлення курсового проекту та його захист.
1. Постановка задачі
Для курсової роботи було обрано базу даних клієнтів та замовлень. Необхідно було вирішити ряд задач, таких як:
створити базу даних;
проаналізувати предметне середовище;
побудувати діаграми ER-типів;
побудувати первісний набір відношень;
виконати подальшу нормалізацію первісного набору відношень при необхідності.
для кожного атрибуту відношень логічного проекту визначити тип даних (з числа тих, які підтримує СУБД, що використовується);
використовуючи мову SQL реалізувати фізичний проект — створити та виконати запити для створення відношень та інших об’єктів БД. Для кожного відношення створити первинний та зовнішні ключі.
навчитися створювати SQL запити на вибірку даних;
закріпити навики з’єднання відношень на основі вказаних критеріїв при створенні SQL запитів на вибірку даних.
2. Логічне проектування
Логічне проектування полягає у визначенні таблиць та зв’язків між ними.
Процес проектування бази даних включає етапи:
виділення сутностей і зв’язків між ними;
побудова ER — діаграми;
формування набору попередніх відношень з вкладанням первинного ключа для кожного відношення з використанням діаграми ER — типа;
додавання не ключових атрибутів у відношення;
Ключовими елементами моделі “cутність — зв’язок” є сутності, атрибути, ідентифікатори і зв’язки. Розглянемо кожний з них по черзі.
Сутність (entity) — це деякий об’єкт, що ідентифікується в робочому середовищі користувача, щось таке, за чим користувач хотів би спостерігати.
Клас сутність — це сукупність сутностей, і описується він структурою або форматом сутності, що становить цей клас. Екземпляр сутності (entity instance) представляє конкретну сутність.
У сутності є атрибути (attributes), або, як їх іноді називають, властивості (properties), які описують характеристики сутності.
Екземпляри сутності мають ідентифікатори (identifiers) — атрибути, за допомогою яких ці екземпляри іменуються, або ідентифікуються
Взаємини сутності виражаються зв’язками (relationships). Модель “cутність — зв’язок” включає класи зв’язків і екземпляри. Класи зв’язків (relationship classes) — це взаємини між класами сутності, а екземпляри зв’язку (relationship instances) — взаємини між екземплярами сутності. У зв’язків можуть бути атрибути.
Схеми, зображені на мал.1, називаються діаграмами cутність — зв’язок”, або ER-діаграмами (entity-relationship diagrams, ER-diagrams). Такі діаграми стандартизовані, але не дуже жорстко. Відповідно до цього стандарту, класи сутності позначаються прямокутниками, зв’язки позначаються ромбами, а максимальне кардинальне число кожного зв’язку указується усередині ромба. Ім’я сутності указується усередині прямокутника, а ім’я зв’язку указується поряд з ромбом.
Мал.1
Перед тим, як створювати фізичний проект БД необхідно створити первісний проект. Він вже буде містити всі необхідні сутності та зв’язки.
В первісному проекті бази даних будуть такі сутності:
Addresses — адреси;
Customer — клієнти;
Customer_Orders — заказ клієнта;
Customer_Addresses — адреса клієнта;
Customer_Payment_Methods — метод доставки заказу;
Customer_Orders_Products -продукт заказаний клієнтом;
Customer_Orders_Delivery -доставка заказу клієнту
Products — продукти;
Suppliers — постачальники;
Розглянемо дані сутності та зв’язок між ними та зобразимо їх на ER — діаграмі, яка зображена на додатку «Додаток А».
3. Вибір СКБД та іншого програмного забезпечення
Microsoft SQL Server Management Studio Express 2005 року безкоштовна версія програмного забезпечення для створення баз даних. Вона дуже добра для навчання на початкових етапах.
Microsoft SQL Server Management Studio Express — платформа баз даних, оптимізована для сучасних додатків, здатна масштабуватися згідно потребам підприємств будь-якого розміру. Застосування Microsoft SQL Server 2005 підвищує рентабельність за рахунок скорочення часу простою і динамічного попереджуючого управління, що значно зменшує адміністративні витрати. Крім того, Microsoft SQL Server 2005 — надійна захищена платформа, якій можна довірити конфіденційні корпоративні дані, критично важливі для бізнесу.
Відповідно до сучасних вимог, в Microsoft SQL Server 2005 приділяється основна увага наступним аспектам:
масштабованість і продуктивність. Microsoft SQL Server 2005 дозволяє підприємствам створювати рішення БД, що забезпечують продуктивність і масштабованість, необхідну сучасним додаткам;
висока доступність. Microsoft SQL Server 2005 забезпечує безперервність функціонування додатків, що працюють з БД, а також зводить до мінімуму адміністративні витрати і зниження продуктивності високо доступних рішень;
безпека. Microsoft SQL Server 2005 надає покращувану захищену платформу даних, що підтримує шифрування важливих даних, аудит модифікації даних і метаданих, застосування зовнішніх криптографічних ключів, а також шифрування і захист файлів архівів електронним підписом;
керованість. Microsoft SQL Server 2005 дозволяє підприємствам понизити витрати часу і засобів на управління інфраструктурою обробки і зберігання даних за рахунок підтримки інноваційних технологій автоматизованого адміністрування, заснованого на політиках, а також покращуваних засобів моніторингу продуктивності, усунення неполадок і настройки. [5]
4. Фізичне проектування БД
4.1 Створення бази даних
Для того щоб створити базу даних у Microsoft SQL Server 2005 потрібно:
запустити SQL Server Management Studio Express;
потім з’явиться вікно де потрібно ввести ім’я сервера та нажати кнопку Соединить.
/>
Далі потрібно клацнути правою кнопкою миші по вкладці Базы данных тавибрати Создать базу данных.
/>
Далі з’явиться вікно де потрібно ввести ім’я бази даних, початковий розмір та ін.
/>
4.2 Створення таблиць у базі даних
Для створення і модифікації таблиць (і взагалі більшості структур SQL Server 2005) можна використовувати графічні можливості SQL Server.
/>
У Enterprise Manager клацніть правою кнопкою миші на значку Tables і виберіть команду New Table (Нова таблиця). Перед нами виникне порожня форма, в яку нам потрібно ввести імена (Column Name) і типи даних (Data Турі) стовпців нової таблиці. Для деяких типів даних (наприклад, char) ми можемо задати довжину, для інших же (таких, як int) довжина однозначно визначається типом даних.
/>
Щоб зробити стовпець product_id ключем таблиці, клацніть в будь-якому місці рядка з ім’ям цього стовпця, щоб виділити її, а потім клацніть на символі ключа на панелі інструментів вікна створення таблиць. Щоб створити композитний ключ, виділіть всі стовпці, що становлять ключ, і клацніть на символі ключа.–PAGE_BREAK–
Програми створення таблиць зображено на додатку «Додаток В».
4.3 Визначення зв’язків
Зв’язки, як і інші структури, можна створювати двома способами: або визначаючи зовнішні ключі в операторах ALTER TABLE, або малюючи зв’язки на діаграмі бази даних.
Ми працюватимемо з діаграмою бази даних.
Клацніть правою клавішею миші на значку Diagrams (Діаграми) і виберіть команду New Database Diagram (Нова діаграма бази даних). Запуститься майстер, який проведе вас через процес додавання таблиць в діаграму. Помістіть на діаграму всі таблиці.
Для створення зв’язку перетягнете первинний ключ з однієї таблиці в зовнішній ключ іншої таблиці, з якою ви хочете встановити зв’язок. [2]
/>
Схема бази даних зображена на додатку «Додаток Б».
Запит про клієнтів та їх адреси показано в додатку «Додаток Г»
Запит про клієнтів, ціну на продукцію та поставщиків показано в додатку «Додаток Д».
/>
Висновки
Технологія баз даних використовується в безлічі додатків. Деякі з них призначені для єдиного користувача з єдиним комп’ютером, інші використовуються робочими групами в кількості 20-30 чоловік через локальну мережу, треті служать сотням користувачів і містять трильйони байтів даних. Останнім часом технологія баз даних застосовується в поєднанні з інтернет технологією для підтримки мультимедійних додатків у відкритих і закритих мережах.
Компонентами додатку бази даних є сама база даних, система управління базою даних і прикладні програми.
База даних — це само документовані збори інтегрованих записів. Вона є само документованою, оскільки містить опис самої себе в словнику даних. Словник даних відомий також як каталог даних, або метадані. База даних є зборами інтегрованих записів, оскільки зв’язки між записами також зберігаються в базі даних. Така організація дозволяє СУБД конструювати навіть вельми складні об’єкти, комбінуючи дані на підставі зв’язків, що зберігаються.
Є два способи створення таблиць, уявлень, індексів і інших структур бази даних. Перший спосіб — використовувати засоби графічного проектування, подібні наявним в Access. Другий спосіб полягає в написанні SQL-операторів, що створюють ці структури, і передачі їх на виконання SQL Server за допомогою програми SQL Query Analyzer.
SQL Server підтримує призначені для користувача типи даних, які дозволяють реалізувати домени. Ці типи можна використовувати для визначення стовпців як в засобах графічного проектування, так і в SQL-операторах.
Структуру таблиці можна міняти за допомогою графічних засобів або SQL-оператора ALTER TABLE. Зв’язки можна створювати шляхом малювання їх на діаграмах бази даних або визначення зовнішніх ключів в SQL-операторах.
Модель “cутність — зв’язок” була розроблена Пітером Ченом. У цій моделі визначається суть — об’єкти, що ідентифікуються, представляють важливість для користувача. Вся суть даного типа утворює клас суті. Окрема суть називається екземпляром. Суть має атрибути, які описують їх характеристики; один або декілька атрибутів визначають суть.
Зв’язки відображають взаємини між суттю. У ER-моделі зв’язку визначаються явним чином; у кожного зв’язку є ім’я; існують також класи зв’язків і екземпляри зв’язків. У зв’язків можуть бути атрибути.
Ступінь зв’язку — це число суті, яка в ній бере участь. Більшість зв’язків є бінарними. Є три типу бінарних зв’язків: 1: 1, 1: N і N: M.
На діаграмах “cутність — зв’язок” суті зображаються прямокутниками, а зв’язки — ромбами. Максимальне кардинальне число зв’язку указується усередині ромба. Мінімальне кардинальне число указується за допомогою перпендикулярної межі або овалу. Зв’язки, що сполучають суть одного класу, називаються рекурсивними. Атрибути можуть бути показані на ER-діаграмі в еліпсах або в окремій таблиці.
Бази даних моделюють не реальний світ, а модель ділового світу, присутню в уяві користувача. Правильним критерієм для оцінки моделі даних є те, наскільки ця модель відповідає призначеній для користувача моделі. Суперечка про те, яка модель найкращим чином відображає реальний світ, не має сенсу.
Список використаної літератури
Теория и практика построения баз данных.8-е изд. Д. Кренке. — Спб.: Питер, 2003. — 800 с.
С. Байдачный, Д. Маленко, Ю. Лозинский. SQL Server 2005: новые возможности для разработчиков — М.: СОЛОН — Пресс, 2006 — 208с.
samouchka.net
proklondike.com
www.microsoft.com/sql
/>Додаток А
Додаток Б
/>
Додаток В
Створення таблиці Products
CREATE TABLE [Products] (
[product_id] INTEGER IDENTITY (1,1) NOT NULL,
[product_type_code] CHAR (15) NOT NULL,
[supplier_code] VARCHAR (15) NOT NULL,
[product_price] MONEY,
[book_isbn] CHAR (15),
[book_author] VARCHAR (40),
[book_publication_date] DATETIME,
[book_title] VARCHAR (255),
[book_price] SMALLMONEY,
[food_contains_yn] CHAR (1),
[food_name] VARCHAR (80),
[food_description] VARCHAR (255),
[food_flavor] VARCHAR (80),
[food_ingredients] VARCHAR (255),
[other_product_details] VARCHAR (255),
CONSTRAINT [PK_Products] PRIMARY KEY ([product_id])
Створення таблиці Ref_Product_Types
CREATE TABLE [Ref_Product_Types] (
[product_type_code] CHAR (15) NOT NULL,
[level_number] INTEGER,
[parent_product_type_code] CHAR (15),
[product_type_description] VARCHAR (80),
CONSTRAINT [PK_Ref_Product_Types] PRIMARY KEY ([product_type_code]))
Створення таблиці Customers
CREATE TABLE [Customers] (
[customer_id] INTEGER IDENTITY (1,1) NOT NULL,
[first_name] VARCHAR (80),
[middle_name] VARCHAR (80),
[last_name] VARCHAR (80),
[customer_phone] VARCHAR (80),
[customer_email] VARCHAR (80),
[other_customer_details] VARCHAR (255),
CONSTRAINT [PK_Customers] PRIMARY KEY ([customer_id]))
Створення таблиці Customer_Orders
CREATE TABLE [Customer_Orders] (
[order_id] INTEGER IDENTITY (1,1) NOT NULL,
[customer_id] INTEGER NOT NULL,
[customer_payment_method_id] INTEGER NOT NULL,
[order_status_code] CHAR (15) NOT NULL,
[date_order_placed] DATETIME NOT NULL,
[date_order_paid] DATETIME,
[der_total_order_price] SMALLMONEY,
[other_order_details] VARCHAR (255),
CONSTRAINT [PK_Customer_Orders] PRIMARY KEY ([order_id]))
Створення таблиці Ref_Payment_Methods
CREATE TABLE [Ref_Payment_Methods] (
[payment_method_code] CHAR (15) NOT NULL,
[payment_method_description] VARCHAR (80),
CONSTRAINT [PK_Ref_Payment_Methods] PRIMARY KEY ([payment_method_code]))
Створення таблиці Ref_Order_Status_Codes
CREATE TABLE [Ref_Order_Status_Codes] (
[order_status_code] CHAR (15) NOT NULL,
[order_status_description] VARCHAR (80),
CONSTRAINT [PK_Ref_Order_Status_Codes] PRIMARY KEY ([order_status_code]))
Створення таблиці Addresses
CREATE TABLE [Addresses] (
[address_id] INTEGER IDENTITY (1,1) NOT NULL,
[line_1] VARCHAR (80),
[line_2] VARCHAR (80),
[line_3] VARCHAR (80),
[city] VARCHAR (50),
[zip_postcode] CHAR (20),
[state_province_county] VARCHAR (50),
[iso_country_code] VARCHAR (50),
[other_address_details] VARCHAR (255),
CONSTRAINT [PK_Addresses] PRIMARY KEY ([address_id]))
Створення таблиці Customer_Addresses
CREATE TABLE [Customer_Addresses] (
[customer_id] INTEGER NOT NULL,
[address_id] INTEGER NOT NULL,
[date_from] DATETIME NOT NULL,
[address_type_code] CHAR (15) NOT NULL,
[date_to] DATETIME,
CONSTRAINT [PK_Customer_Addresses] PRIMARY KEY ([customer_id], [address_id], [date_from]))
Створення таблиці Ref_Address_Types
CREATE TABLE [Ref_Address_Types] (
[address_type_code] CHAR (15) NOT NULL,
[address_type_description] VARCHAR (80),
CONSTRAINT [PK_Ref_Address_Types] PRIMARY KEY ([address_type_code])
Створення таблиці Customer_Orders_Products
CREATE TABLE [Customer_Orders_Products] (
[order_id] INTEGER NOT NULL,
[product_id] INTEGER NOT NULL,
[quantity] VARCHAR (40),
[comments] VARCHAR (40),
CONSTRAINT [PK_Customer_Orders_Products] PRIMARY KEY ([order_id], [product_id]))
Створення таблиці Customers_Payment_Methods
CREATE TABLE [Customers_Payment_Methods] (
[customer_payment_method_id] INTEGER IDENTITY (1,1) NOT NULL,
[customer_id] INTEGER NOT NULL,
[payment_method_code] CHAR (15) NOT NULL,
[card_number] VARCHAR (40),
[date_from] DATETIME,
[date_to] DATETIME,
[other_details] VARCHAR (40),
CONSTRAINT [PK_Customers_Payment_Methods] PRIMARY KEY ([customer_payment_method_id]))
Створення таблиці Suppliers
CREATE TABLE [Suppliers] (
[supplier_code] VARCHAR (15) NOT NULL,
[supplier_name] VARCHAR (80),
[other_supplier_details] VARCHAR (255),
CONSTRAINT [PK_Suppliers] PRIMARY KEY ([supplier_code]))
Створення таблиці Ref_Delivery_Status_Codes
CREATE TABLE [Ref_Delivery_Status_Codes] (
[delivery_status_code] VARCHAR (15) NOT NULL,
[delivery_status_description] VARCHAR (80),
CONSTRAINT [PK_Ref_Delivery_Status_Codes] PRIMARY KEY ([delivery_status_code]))
Створення таблиці Customer_Orders_Delivery
CREATE TABLE [Customer_Orders_Delivery] (
[order_id] INTEGER NOT NULL,
[date_reported] DATETIME NOT NULL,
[delivery_status_code] VARCHAR (15) NOT NULL,
CONSTRAINT [PK_Customer_Orders_Delivery] PRIMARY KEY ([order_id], [date_reported]))
Додаток Г
SELECT Customers. *, Addresses. *
FROM Customers INNER JOIN
Customer_Addresses ON Customers. customer_id = Customer_Addresses. customer_id INNER JOIN
Addresses ON Customer_Addresses. address_id = Addresses. address_id
Додаток Д
SELECT Customers. first_name, Customers. middle_name, Customers. last_name, Customers. customer_phone, Addresses. city,
Addresses. state_province_county, Products. product_price, Suppliers. supplier_name, Suppliers. other_supplier_details
FROM Addresses CROSS JOIN
Suppliers INNER JOIN
Products ON Suppliers. supplier_code = Products. supplier_code CROSS JOIN
Customers
GROUP BY Customers. first_name, Customers. middle_name, Customers. last_name, Customers. customer_phone, Addresses. city,
Addresses. state_province_county, Products. product_price, Suppliers. supplier_name, Suppliers. other_supplier_details
ORDER BY Customers. first_name