
- •Поняття баз даних.
- •Реляційні бази даних
- •1.3. Первинні ключі та індекси
- •1.4. Реляційні відношення (зв’язки) між таблицям
- •1.4.1. Відношення "один-до-багатьох"
- •1.4.2. Відношення "один-до-одного"
- •1.4.3. Відношення "багато-до-багатьох"
- •1.4.4. Зв’язки між записами однієї таблиці
- •1.5. Цілісність посилань (referencial integrity)
- •Індекси.
- •Поняття транзакцій
- •Локальні та файл-серверні бази даних
- •Загальний огляд засобів для роботи з базами даних
- •Побудова додатків баз даних в архітектурі "клієнт-сервер"
- •Interbase: деякі технічні характеристики
- •Питання з'єднання з видаленим сервером
- •Приклад бд “Облік товарів на складі”
- •Зміна визначення домена – після create domain (крім типу та not null)
- •Первинний ключ
- •Зовнішній ключ та визначення цілісності посилань
- •Використання генераторів та збережених процедур
- •Знищення таблиці
- •Використання підрядків (containing)
- •Додавання, зміна, видалення записів
- •Оператор insert
- •Явне вказання списку значень
- •Вказання значень за допомогою оператора select
- •Оператор delete
Зміна визначення домена – після create domain (крім типу та not null)
ALTER DOMAIN ім’я {
[SET DEFAULT {літерал] NULL | USER}]
| [DROP DEFAULT] | [ADD [CONSTRAINT] CHECK (<обмеж_домена>)] | [DROP CONSTRAINT]
};
Створення таблиць InterBase
CREATE TABLE Ім’яТаблиці [EXTERNAL [FILE] "<ім’я файлу>"] (<визн_поля> [, <визн_поля> | <обмеження> ...]);
[EXTERNAL [FILE] "<ім’я файлу >"] – для зовнішніх таблиць БД.
- <визн_поля> - визначення поля таблиці БД.
<визн_поля> = поле {тип_даних | COMPUTED [BY] (<вираз>) | домен}
[DEFAULT {літерал! NULL | USER}] [NOT NULL] [<обмеж_поля>] [COLLATE collation]
де поле – ім’я поля; тип_даних - тип поля, і, можливо, розмірність масиву (в кв. дужках), якщо поле - масив; для символьних полів может бути вказаний набір символів, відмінний від прийнятого за замовчуванням, за доп. речення CHARACTER SET; COMPUTED [BY] (<вираз>) - служить для визначення поля з обчислюваними значеннями;
domain – ім’я домена, тобто. раніше описаного типу поля;
DEFAULT - значення поля за замовчуванням (при створенні запису і до його зміни);
обмеж_поля - обмеження, на значення поля;
COLLAТЕ collation - порядок сортування символів (для символьних полів) для обраного набору символів.
Первинний ключ
Атрибут PRIMARY KEY(<ім’я_поля>)
Унікальний ключ (для полів – не-первинних ключів)
Атрибут UNIQUE(<ім’я_поля>)
Зовнішній ключ та визначення цілісності посилань
FOREIGN KEY (<список полів зовнішнього ключа>)
REFERENCES <ім’я батьківської таблиці> [<список полів батьківської таблиці>]
Список полів зовнішнього ключа визначає поля дочірньої таблиці, по яким будується зовнішній ключ.
Імя батьківської таблиці визначає таблицю, в якій описаний первинний ключ (або поле з атрібутом UNIQUE).
Також цілісність посилань можна задати як
[CONSTRAINT <ім’я цілісності посилань >]
FOREIGN KEY (<список полів зовнішнього ключа>)
REFERENCES < ім’я батьківської таблиці > [<список полів батьківської таблиці >]
Приклад:
CREATE TABLE TOVARY(
TOVAR VARCHAR(20) NOT NULL COLLATE PXW_CYRL,
OD_VYM VARCHAR(l0) NOT NULL COLLATE PXW_CYRL,
CINA FLOAT NOT NULL,
PRIMARY KEY(TOVAR),
CHECH CINA>0
);
CREATE TABLE POKUPCI(
POKUP VARCHAR(20) NOT NULL COLLATE PXW_CYRL,
MISTO VARCHAR(12) COLLATE PXW_CYRL,
ADRESAA CHAR(20) COLLATE PXW_CYRL,
PRIMARY KEY(POKUP)
);
CREATE TABLE PRODAZH(
N_PROD INTEGER NOT NULL,
DAT_PROD DATE NOT NULL,
KILK INTEGER NOT NULL,
TOVAR VARCHAR(20) NOT NULL COLLATE PXW_CYRL,
POKUP VARCHAR(20) COLLATE PXW_CYRL,
PRIMARY KEY(N_PROD),
FOREIGN KEY(POKUP) REFERENCES POKUPCI,
FOREIGN KEY(TOVAR) REFERENCES TOVARY
);
COLLATE – порядок сортування
FOREIGN KEY – зовнішній ключ ( у дочірній таблиці для з’єднання з батьківською)
Використання генераторів та збережених процедур
Для створення автоінкрементних полів (як первинних ключів) використовуються генератори
CREATE GENERATOR PROD_N;
SET GENERATOR PROD_N TO 1;
%1 – стартове значення
Тоді створимо збережену процедуру GET_N_PROD, яка повертає поточне значення генератора у цілочисельний параметр NR
CREATE PROCEDURE GET_N_PROD
RETURNS (NR INTEGER)
AS
BEGIN
NR = GEN_ID(PROD_N,1);
END;
Для роботи зі збереженою процедурою в клієнтській програмі використовується компонента TStoredProc, властивість ParamByName.Value (до якої можна звернутись в обробнику подій AfterInsert або OnNewRecord компоненти TTable).
Зміна таблиці:
ALTER TABLE
- додати опис нового поля;
ALTER TABLE <ім’я таблиці> ADD <визначення поля>;
- додати нові атрибути цілісності.
ALTER TABLE < ім’я таблиці > ADD [CONSTRAINT <і’мя обмеження>] <визначення цілісності>;
видалити поле (поля) з таблиці;
ALTER TABLE < ім’я таблиці > DROP < ім’я поля 1>[,< ім’я поля 2 >.. . ] ;
видалити атрибути цілісності таблиці;
ALTER TABLE < ім’я таблиці > DROP < і’мя обмеження цілісності>;
Приклад. Нехай потрібно змінити характеристики поля ADRESAA, змінивши тип поля з CHAR(20) на VARCHAR(20). Тоді:
1. Додаємо в таблицю нове тимчасове поле ADRESAA_TMP, яке повністю повторює характеристики поля ADRESAA:
ALTER TABLE POKUPCI
ADD ADRESAA_TMP CHAR(20) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL;
2. Копіюємо дані з ADRESAA в ADRESAA_TMP:
UPDATE POKUPCI
SET ADRESAA_TMP = ADRESAA;
3. Видаляємо стовпець ADRESAA:
ALTER TABLE POKUPCI
DROP ADRESAA;
4. Створюємо нове поле ADRESAA з потрібними характеристиками:
ALTER TABLE POKUPCI
ADD ADRESAA VARCHAR(20) NOT NULL COLLATE PXW_CYRL;
5. Переписуємо дані з тимчасового поля ADRESAA_TMP в нове поле ADRESAA:
UPDATE POKUPCI
SET ADRESAA = ADRESAA_TMP;
6. Вилучаємо поле ADRESAA_TMP:
ALTER TABLE POKUPCI
DROP ADRESAA_TMP;