|
Тепер статті може редагувати кожен. Приєднуйтесь до нашої вікі-спільноти! |
COCEI
Отже, СОСЕІ - це дисципліна про системи обробки соціально-економічної інформації. Розумійте це як хочете.
Вивчаємо ж ми у цьому курсі бази даних.
Зміст |
[ред.] Вступ
[ред.] Нащо воно нам треба?
Якщо ви хочете використати комп'ютер, щоб не забути якусь важливу інформацію, можна запустити програму "Блокнот" (або схожу). Для дослідження закономірностей у записаних в Блокноті даних можна використати великий продукт ІТ-думки: програму Калькулятор. Основною проблемою такого підходу є те, що з великими масивами даних працювати неможливо.
Проблему розв'язує програма Excel (або інший spreadsheet-процесор). У ній є набір потужних засобів обробки різної інформації. Часто навіть деякі фірми використовують Excel як єдине місце зберігання даних. Тут проблеми починаються, коли кількість записів сягає 500-600 штук. Іноді весело спостерігати над муками бідного процесора.
І тут вступають у дію Бази Даних. Кожна БД, яка себе мінімально поважає, може вільно працювати з десятками тисяч різних записів. Круті бази, як у Гуглі, працюють з терабайтами різних цікавих даних і навіть не жаліються.
Крім того, програмістам значно простіше працювати з БД, ніж із текстовими файлами чи сторінками Екселю. Тому для професійних статистичні пакетів (типу Statistica) потрібна інформація саме з баз даних.
[ред.] Рекомендований софт
Хоча існують високоякісні професійні продукти роботи з БД, за використання яких не треба платити, наш улюблений викладач пропонує нам використовувати крадене пропрієтарне ПЗ. Що поробиш - хто стернує, той замовляє музику.
Таким чином, вам будуть потрібні:
- MS SQL Server 2005 - головна програма (система управління базами даних, СУБД). Безкоштовна для навчальних цілей (відповідним чином урізана).
- Case Studio - програмка для графічного створення баз даних, коштує $479.00. Можна скачати тріальну версію на місяць.
- Crystal Reports - програма створення звітів, коштує 579.59 євро. Можна скачати тріальну версію.
- Books Online - електронна документація з SQL Server. Слава Богу, безкоштовна.
[ред.] Теорія
[ред.] Непотрібна частина
Ті факти, про які ви маєте знати для хорошої оцінки з СОСЕІ, але які не особливо потрібні для практичної роботи.
[ред.] Реляційна модель даних
Грубо кажучи, якщо ви зберігаєте дані в табличках, то це - реляційна модель даних. Теоретично ця модель базується на теорії множин.
Нехай у вас є кілька (від 1 до N) великих множин - від D1 до DN. Важливо, що множини можуть повторюватися (напр. D3 = D5). З кожної з них ви (в чітко визначеному порядку) вибираєте по одному елементу - такий набір називається кортежем. Множина УСІХ таких кортежів - це декартів добуток. Він позначається D1 × D2 × ... DM, де Di - множина, з якої взято i-тий елемент.
У такій множині є підмножини. Кожна з цих підмножин називається відношенням (=relation -> реляційна модель).
Приклад 1. На лекції нам наводили приклад:
- D1 = { Ющенко; Тимошенко; Янукович }
- D2 = { Економіка; СОСЕІ }
- D3 = { 3; 4; 5 }
Декартів добуток - множина з 18 елементів, кожен із яких береться зі своєї множини:
| D1 | D2 | D3 |
| Ющенко | Економіка | 5 |
| Янукович | СОСЕІ | 3 |
| | ||
| Тимошенко | Економіка | 4 |
Якщо ж ми візьмемо не всі елементи декартового добутку, то отримаємо певне відношення. Кількість рядків у ньому буде кардинальним числом відношення.
Приклад 2. Чому відношення назвали саме так? Розглянемо інший приклад. Нехай D1 = D2 = N (тобто беремо два елементи з множини натуральних чисел). Тоді декартовим добутком буде N × N, тобто сукупність усіх пар натуральних чисел.
Якщо ж ми залишимо лише ті кортежі декартового добутку, в яких перший елемент більший за другий (наприклад, {3,1}, {44, 17} нам підходять, а {5, 7} - ні), то визначимо відношення між першим елементом і другим: x1 > x2.
Фактично, табличка, яку ми отримаємо, буде містити всі можливі пари чисел, для яких виконується відношення "більше". Це означає, що теоретично, ми по цій табличці можемо перевіряти, чи число А більше числа В.
Тому, по суті, кожна табличка є відношенням, що складається з набору кортежів.
[ред.] Атрибути
Тепер подивимося на заголовок таблиці. Якщо стовпцеві присвоїти ім'я, то він стане атрибутом. Наприклад, у прикладі 1 можна стовпцям можна присвоїти такі імена: "Посадовець", "Предмет", "Оцінка".
Імена потрібні для того, щоб легше було розбиратися, і щоб можна було розрізняти стовпці.
Кількість атрибутів - це ступінь відношення.
[ред.] Обмеження, зв'язки та ключі
На будь-яку таблицю (=відношення) накладається наступне обмеження: РЯДКИ НЕ МОЖУТЬ ПОВТОРЮВАТИСЯ.
З цього випливає цікавий практичний наслідок: якщо кожен рядок є унікальним, то ми, назвавши якусь кількість його атрибутів, точно можемо його вирізнити серед інших. Наприклад, практично кожного громадянина України можна вирізнити за такими атрибутами: ім'я, прізвище, по батькові, дата народження (ок, ок, я ж написав "практично").
Набір атрибутів, який може вирізнити будь-який рядок у таблиці, називається первинним ключем (PRIMARY KEY) таблиці. Його з практичних міркувань намагаються тримати якомога меншим. Наприклад, якби б кожному громадянинові України присвоїти номер (це чомусь вважається негуманним), то PRIMARY KEY складався лише б із цього номера. Досить часто (дууже часто) так і роблять - додають до таблиці атрибут із унікальними числами для кожного рядка і роблять його первинним ключем таблиці.
Напевне, ключем його назвали через те, що він підходить лише для одного рядка-замка. Маєте ключ - маєте рядок. Не маєте ключа - до побачення. Де ж цей Паспарту?..
В такому разі, можна переформулювати наше обмеження: ПЕРВИННІ КЛЮЧІ (PRIMARY KEYS) не можуть повторюватися.
[ред.] SQL
Управляти даними можна по-різному. Можна візуально - будувати таблички-прямокутники, вказувати списки атрибутів, стрілочками показувати відношення. Так ми будемо робити в Case Studio. Природнім способом роботи з даними є текстова мова.
SQL (structured query language, структурована мова запитів) - мова програмування декларативного характеру, основним напрямом застосування є робота з реляційно організованими даними.
Її синтаксис максимально наближений до звичайної англіської. Прочитайте:
SELECT Name, Age FROM Employees WHERE Salary BETWEEN 100 AND 200
Відразу ясно, що хтось хоче дізнатися імена та вік тих нещасних, чия зарплатня коливається між сотнею та двомастами гривнями.
[ред.] Робота з таблицями (DDL)
Перш ніж працювати з даними всередині таблиць, їх треба створити. Відповідна частина мови SQL називається DDL (data definition language, мова означення даних). Вона дуже складна, тому про неї детально не будемо.
Варто лише сказати наступне. Речення мови схожі на наказовий спосіб в англійській мові та формуються так:
ДІЄСЛОВО ДОДАТОК Назва (далі можливі інші параметри)
Дієслова можуть бути наступні:
- CREATE - створити щось
- DROP - щось викинути
- ALTER - щось змінити
Додатки можуть бути такими:
- DATABASE - база даних (в MS SQL Server може бути кілька окремих баз даних)
- TABLE - таблиця
- PROCEDURE - процедура (запит, що зберігається в БД) і
- TRIGGER - тригер (запит, що виконується при кожній зміні бази, реагує на певні умови і робить що-небудь)
Дієслова та додатки, як і більшість інших, є звичайними англійськими словами і здогадатися про їх значення можна, переклавши їх українською. CREATE DATABASE означає "створити базу даних", DROP TRIGGER - "вилучити приклад".
Назви, просто кажучи - це слова з літер та цифер. І виходить, що можна формулювати такі речення:
CREATE DATABASE My_Beloved_Database DROP TABLE My_Enemys_Table ALTER TABLE Bad_Table DROP DATABASE Whatever
Вгадайте, що робить кожне з речень. Просуваємося далі, до того, що в нашій схемі називається додатками, тобто баз даних, таблиць, збережених процедур, тригерів.
[ред.] Бази даних
[ред.] Робота з даними (DML)
Всередині таблиці (чи кількох таблиць) можна керувати саме даними. Перше дієслово з цього блоку - SELECT. Спрощено виглядає так:
SELECT імена стовпців FROM назва таблиці [далі йде необов'язкова частина (див. нижче)]
Наприклад:
SELECT Name, Surname FROM All_People_On_Earth <--- повертає нам список імен та прізвищ усіх людей на Землі SELECT * FROM Cool_Table <--- зірочка означає "всі стовпці без винятків"
Після FROM може йти не просто назва таблиці, а ціле підрядне речення, яке визначає таблицю - об'єднання кількох, з яких беруться дані.
- INNER JOIN - те саме, що й JOIN Ця команда об'єднує дві таблиці в одну за виконання певних умов.
Синтаксис її такий:
Таблиця1 INNER JOIN Таблиця2 ON (Умова - перетин таблиць на FK чи PFK) SELECT Name, Surname, Date FROM All_People_On_Earth INNER JOIN Births ON All_People_On_Earth.PersonID=Births.PersonID
Як ми бачимо, таблиці поєднуються через PersonID - якщо хтось має PersonID, выдповідного якому не вдається знайти в Births - то він якби й не народжувався.
Після основної частини ідуть підрядні речення:
- GROUP BY імена стовпців - використовується для групування рядків за якоюсь ознакою (ага, цей оператор придумали расисти). Далі може бути HAVING умова - робить те ж, що й WHERE, але застосовується для групування.
- WHERE умова - вказує, що слід вибирати лише ті рядки, для яких виконується певна умова (наприклад Age >= 18 - тільки повнолітні). Не використовується на згруповані дані.
- ORDER BY імена стовпців - визначає порядок рядків у поверненій таблиці. Після цього можна поставити ще слово ASC (ascending , порядок за зростанням) чи DESC (descending, порядок за спаданням).
[ред.] Практичні
Якщо ви не дуже шарили, що робити на практичних, ось короткий алгоритм. Варто просто ще раз повторити описані дії.
На першому практичному нам треба було створити макет бази даних у Case Studio, згенерувати на його основі скрипт SQL, а скрипт запустити в MSSQL, щоб створити робочу базу даних. Після цього треба було створити кілька запитів до нової бази - на створення даних та на їх використання.
[ред.] 1. Case Studio
- Нова модель - MS SQL 2005
- Таблиці
- Generate
Нам треба було досягти такого малюнка в CS:
Створюємо нову модель (Ctrl+N). Зі списку вибираємо MS SQL 2005. Правою кнопкою натискаємо на здоровенному чорному прямокутнику, вибираємо Background Color, ставимо білий (наприклад).
Натискаємо клавішу "E" (англійською) - або ж на панелі інструментів знаходимо інструмент Entity і клацаємо на нього. Клацаємо на нашому вікні. Отримаємо табличку.
[ред.] Подальше читання
- інформатика:системи управління базами даних - файна (поки що не написана, правда) стаття інформатиків з приводу БД.
- Основи баз даних і знань
