Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
M1_9spCP.doc
Скачиваний:
1
Добавлен:
18.09.2019
Размер:
130.05 Кб
Скачать

Короткі теоретичні відомості

Таблиці як двовимірні агрегати даних, які визначають функ­ціо­нальну залежність між окремими характеристиками, використо­ву­ють в системних програмах та системах управління базами даних для відтворення даних при виконанні програм і маніпуляцій з ба­за­ми даних.

  1. Побудова процедур визначення відношень порядку для групи ключових полів

Для розв’язання будь-яких задач з використанням програмування на мові С треба створити сховища даних, здатні зберігати достатні обсяги інформації. Для ініціалізації та заповнення динамічно створених масивів необхідно створити спеціальну процедуру, що копіює значення з попередньо визначеного масиву.

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

Основні типи відношень в процедурах пошуку Відношення рівності та нерівності

При пошуку за прямою адресою та лінійному пошуку в невпорядкованих таблицях перевіряються відношення рівності або нерівності для вибірки потрібних записів та елементів. Набори операцій мови С/C++ "=" та "!=" існують для всіх визначених типів даних і полів таблиць створюються за умовчанням для кожного як порівняння кожної пари полів основної структури. Однак для типів даних з динамічними складовими нерівність полів вказівників ще не свідчить про нерівність даних, що знаходяться за вказівниками. Тому операції "=" та "!=" для типів даних з динамічними складовими необхідно перевизначити. Стандартна функція ANSI C strcmp перевіряє саме відношення нерівності рядків і може успішно використовуватись в різних варіантах лінійного пошуку.

Приклад функції порівняння

// порівняння рядків за відношенням нерівності

int neqKey(struct recrd* el, struct keyStr kArg)

{return (strcmp(el->key.str, kArg.str)||

el->key.nMod != kArg.nMod);

}

Відношення порядку

Впорядкування таблиць за ключовими полями стає мож­ли­вим лише у випадку впорядкування кодів кожного з цих ключових полів. Відношення порядку встановлюються для даних з одно­ви­мір­ними множинами визначення (доменами) значень. Всі числові і перенумеровані типи даних, в тому числі і полів мають визначені відношення порядку. Тому набори операцій мови С/C++ "=" та "!=", які створюються за умовчанням, необхідно розширити додат­ковими операціями відношень мови С "<", "<=", ">=" та ">", в тому числі з урахуванням полів з вказівниками.

Для визначення відношення порядку багатокомпонентних типів необхідно, щоб кожний компонент мав відношення порядку, і щоб узагальнююче відношення будувалося за допомогою моно­тон­них функцій. Відношення порядку завжди визначаються при побудові індексів в реляційних системах управління базами даних (СУБД), наприклад, в більшості SQL-серверів як зважене об’єд­нан­ня полів, а в деяких системах, наприклад у FoxPro, припустимий вираз індексу, що визначає функцію полів.

Приклад функцій порівняння

// порівняння структур за відношенням порядку

int cmpStr(unsigned char* s1, unsigned char* s2)

{unsigned n;

while(s1[n]==s2[n]&&s1[n]!=0)n++;

return s1[n]-s2[n];

}

int cmpKey(struct recrd* el, struct keyStr kArg)

{ int i=cmpStr((unsigned char*)el->key.str,

(unsigned char*)kArg.str);

if(i)return i;

return el->key.nMod - kArg.nMod;

}

Системні програми в процесі свого виконання використовують власну вбудовану інформаційну базу (IБ), а також будують ІБ задачі про текст на заданій вхідній мові.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]