Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.Б.Д / лекции / 1БД.doc
Скачиваний:
30
Добавлен:
30.05.2020
Размер:
166.91 Кб
Скачать

8 Запис sql-операторів

Для успішного вивчення язика SQL необхідно привести короткий опис структури SQL-операторів і нотації, які використовуються для визначення формату різних конструкцій язика. Оператор SQL складається із зарезервованих слів, а також із слів, визначуваних користувачем. Зарезервовані слова є постійною частиною язика SQL і мають фіксоване значення. Їх слід записувати в точності так, як це встановлено, не можна розбивати на частини для перенесення з одного рядка на інший. Слова, визначувані користувачем, задаються їм самим (відповідно до синтаксичних правил) і є ідентифікаторами або іменами різних об'єктів бази даних. Слова в операторі розміщуються також відповідно до встановлених синтаксичних правил.

Ідентифікатори язика SQL призначені для позначення об'єктів в базі даних і є іменами таблиць, уявлень, стовпців і інших об'єктів бази даних. Символи, які можуть використовуватися в створюваних користувачем ідентифікаторах язика SQL, повинні бути визначені як набір символів. Стандарт SQL задає набір символів, який використовується за умовчанням, – він включає рядкові і прописні букви латинського алфавіту ( A-Z, а-z ), цифри ( 0-9 ) і символ підкреслення ( _ ). На формат ідентифікатора накладаються наступні обмеження:

ідентифікатор може мати довжину до 128 символів;

ідентифікатор повинен починатися з букви;

ідентифікатор не може містити пропуски.

<ідентифікатор>::=<буква>

{<буква>|<цифра>}[,...n]

Більшість компонентів язика не чутлива до регістра. Оскільки у язика SQL вільний формат, окремі SQL-оператори і їх послідовності матимуть більш читаний вигляд при використовуванні відступів і вирівнювання.

Язик, в термінах якого дається опис язика SQL, називається метамовою . Синтаксичні визначення звичайно задають за допомогою спеціальної металінгвістичної символіки, званої Бекуса-Науера формулами (БНФ). Прописні букви використовуються для запису зарезервованих слів і повинні указуватися в операторах точно так, як це буде показано. Рядкові букви вживаються для запису слів, визначуваних користувачем. Вживані в нотації БНФ символи і їх позначення показані в таблиці.

Таблиця 1.2. Символи формул Бекуса-Науера

Символ

Позначення

::=

Рівно за визначенням

|

Необхідність вибору одного з декількох приведених значень

<.>

Описана за допомогою метамови структура язика

{.}

Обов'язковий вибір деякої конструкції із списку

[.]

необов'язковий вибір деякої конструкції із списку

[,.n]

необов'язкова можливість повторення конструкції від нуля до декількох разів

Опис учбової бази даних

В подальшому викладі як приклад використовуватиметься невелика база даних, що відображає процес поставки або продажу деякого товару постійним клієнтам.

Виходячи з аналізу наочної області, можна виділити два типи єств – ТОВАР і КЛІЄНТ, які зв'язані між собою відношенням "многие–ко–багато чим", оскільки кожний покупець може купити багато найменувань товару, а кожний товар може бути куплений багатьма покупцями. Проте реляційна модель даних вимагає замінити відношення "многие–ко-багато чим" на декілька відносин "один–ко-багато чим". Додамо ще один тип єств, що відображає процес продажу товарів, – ОПЕРАЦІЯ.

Встановимо зв'язки між об'єктами. Один покупець може неодноразово купувати товари, тому між об'єктами КЛІЄНТ і ОПЕРАЦІЯ є зв'язок "один–ко–багато чим". Кожне найменування товару може неодноразово брати участь в операціях, в результаті між об'єктами ТОВАР і ОПЕРАЦІЯ є зв'язок "один-ко-багато чим".

Визначимо атрибути і пов'яжемо їх з єствами і зв'язками. До об'єкту ТОВАР відносяться такі характеристики, як назва, тип, ціна, сорт. До об'єкту КЛІЄНТ – ім'я, по батькові, прізвище, фірма, місто, телефон. Тип єства ОПЕРАЦІЯ може бути охарактеризований такими ознаками, як дата і кількість проданого товару.

Важливим етапом в створенні бази даних є визначення атрибутів, які однозначно визначають кожний екземпляр єства, тобто виявлення первинних ключів.

Для таблиці ТОВАР назва не може служити первинним ключем, оскільки товари різних типів можуть мати однакові назви, тому введемо первинний ключ КодТовара, під яким можна розуміти, наприклад, артикул товару. Так само ні Ім'я, ні Фірма, ні Місто не можуть служити первинним ключем в таблиці КЛІЄНТ. Введемо первинний ключ КодКлієнта, під яким можна розуміти номер паспорта, ідентифікаційний номер платника податків або будь-який інший атрибут, однозначно визначаючий кожного клієнта. Для таблиці ОПЕРАЦІЯ первинним ключем є поле КодСделки, оскільки воно однозначне визначає дату, покупця і інші елементи даних. Як первинний ключ можна б було вибрати не одне поле, а деяку сукупність полів, але для ілюстрації конструкцій язика обмежимося простими первинними ключами.

Встановимо зв'язки між таблицями. Один покупець може неодноразово купувати товари. Тому між таблицями КЛІЄНТ і ОПЕРАЦІЯ є зв'язок "один–ко–багато чим" по полю КодКлієнта.

Кожний покупець може придбати декілька різних товарів. Тому між таблицями ТОВАР і ОПЕРАЦІЯ є зв'язок "один–ко–багато чим" по полю КодТовара.

Тепер потрібно створити зв'язки між таблицями бази даних. Для цього помістимо копії первинних ключів з батьківської таблиці ( таблиці із сторони "один") в дочірню таблицю ( таблицю із сторони "багато"). Для організації зв'язку між таблицями ТОВАР і ОПЕРАЦІЯ помістимо копію поля КодТовара з таблиці ТОВАР в таблицю ОПЕРАЦІЯ. Для організації зв'язку між таблицями КЛІЄНТ і ОПЕРАЦІЯ помістимо копію поля КодКлієнта з таблиці КЛІЄНТ в таблицю ОПЕРАЦІЯ. Для таблиці ОПЕРАЦІЯ поля КодКлієнта і КодТовара є зовнішніми (чужими) ключами. В результаті одержимо наступну структуру бази даних.

Мал. 1.1. Приклад структури бази даних.

Соседние файлы в папке лекции