- •Основні поняття
- •Характеристика зв'язків
- •Відділ а Співробітники в
- •Відділ а Дата звільнення в
- •Класифікація сутностей
- •Аналіз предметної області
- •Розробка універсального відношення
- •Розробка er-моделі предметної області
- •Книга має Твір
- •Книга належить Розділ
- •Ієрархічна (деревовидна) структура даних
- •Мережна структура даних
- •Реляційна модель даних
- •Поняття ключа, основні типи ключів
- •Студент-успішність
- •Основні поняття реляційної алгебри. Дії над таблицями.
- •Загальні відомості щодо нормалізації схем бд
- •Перша та друга нормальна форма
- •Третя нормальна форма та нфбк
- •Нормальна форма Бойса-Кодда
- •П'ята нормальна форма та послідовність етапів нормалізації
- •Об'єктно-орієнтовані субд
- •1 Зв'язок об'єктно-орієнтованих субд із загальними поняттями об'єктно-орієнтованого підходу
- •2 Об'єктно-орієнтовані моделі даних (оомд)
- •3 Мови програмування об'єктно-орієнтованих баз даних
- •4 Мови запитів об'єктно-орієнтованих баз даних
- •Мови реляційних баз даних
- •1. Загальна характеристика
- •2. Типова організація сучасної скбд
- •3. Мова foxpro
- •4. Мова sql
- •Загальні підходи
- •Спискові структури
- •Зв'язаний розподіл пам'яті
- •Нелінійні зв'язкові структури
- •Представлення рядкових даних
- •Індексні методи
- •Способи включення записів та організіція індексних файлів
- •Адресні методи
- •Табл 5.1 - Розрахунок адреси
- •Табл 5.2 - Розмiщення даних у пам'ятi
- •Порівняльні параметри
- •Інвертований метод
- •Поняття експертних систем
- •Подання знань в соз
- •Основні моделі знань та їх порівняльні характеристики
- •Представлення знань із використанням логіки предикатів
- •Найпростіші конструкції мови предикатів
- •Предикатні формули
- •Любить (х, у),
- •Визначення правильно побудованої формули
- •Правило резолюції для простих пропозицій
- •S1 (заперечення): ¬ а
- •Чи одержує студент стипендію.
- •S: ¬одержує (студент, стипендію)
- •Порядок розв'язування задачі
- •Семантичні мережі
- •Продукційні моделі
- •Якщо - то (явище - реакція)
- •Подання знань із застосуванням фреймів
- •Стратегії пошуку в соз
- •Нечіткі множини в системах баз знань
- •Визначення I класифiкацiя аіс
- •Автоматизованi БнД
- •Риcунок 1.4 - Схема взаємодiї колективу спецiалiстiв банку
- •Вимоги до БнД
- •Принципи побудови БнД
Представлення рядкових даних
У сучасних мовах програмування та інформаційних системах важливу роль відіграють рядкові дані. Рядком називається кінцева лінійно упорядкована послідовність простих даних символьного типу, яку розглядають як єдине ціле. Таке визначення рядка в загальному випадку припускає, що задана множина різних символів, або літер і набір правил, що дозволяє створювати бажані ланцюжки символів [15, 16].
У загальному випадку рядок у процесі виконання операцій над ним змінюється як по складу вхідних у нього символів, так і по довжині, тобто по числу символів. Тому логічна структура рядка може бути в найпростішому випадку представлена у вигляді вектору з перемінною довжиною. Метою доступу до рядка може бути не один його елемент (символ, або літера), а деякий ланцюжок символів, у тому числі і др. всього рядка в цілому.
Часто для рядка виділяється вектор деякої фіксованої довжини, причому всі зміни розміру рядка повинні відбуватися в межах цієї довжини. При такому підході до організації рядка його варто вважати напівстатичною структурою даних. Існує і більш загальне трактування рядка як динамічної структури. Але така структура організується, як правило, за допомогою зв'язкового списку.
При векторному представленні фізичної структури рядки можуть бути організовані за допомогою дескриптора або граничних маркерів. При дескрипторному методі (рис.5.9) для кожного рядка відводять дескриптор, який включає інформацію про ім'я рядка, його довжині і про вказівник початку рядка в пам'яті . В деяких випадках може бути корисною інформація про максимальну довжину рядка.
Рис. 5.9 - Приклад векторного представлення фізичної структури рядка з використанням дескриптора
В методі граничних маркерів границі кожного рядка задаються в явному виді з використанням спеціального маркера, який , звичайно, не повинен бути елементом ніякого рядка. Приклад представлення рядка з маркером приведений на рис.5.10 , на якому в якості маркера використано спеціальний символ #.
Рис. 5.10 - Приклад векторного представлення рядка з використанням граничного маркеру
В методі маркерів відпадає необхідність зберігати в дескрипторі інформацію про довжину рядка, і, відповідно , дескриптор спрощується. Однак маркери самі вимагають додаткової пам'яті для їх зберігання. Крім того, в цьому методі довжина рядка в випадку необхідності повинна визначатися шляхом підрахунку її елементів, що приводить до збільшення обробки відповідного рядка. У випадку, коли для запису довжини рядка і маркера необхідна однакова ділянка пам'яті, метод маркерів навряд чи має перевагу перед дескрипторним методом.
Спискове представлення рядків забезпечує максимальну гнучкість в виконанні різних операцій над рядками. Однак пам'ять при цьому використовується дуже неефективно , оскільки елемент і вказівник може займати один і то й же об'єм пам'яті. Другий недолік спискового представлення рядка полягає в тому, що логічно сусідні елементи рядка не є фізично сусідніми в пам'яті.
В ряді випадків рядок розбивається на групи, для зберігання яких використовується зв'язний список з елементами однакової довжини (рис 5.11) . В кінці кожного елемента розміщують вказівник, який зберігає адресу наступного елементу списку.
Рис. 5.11 - Приклад представлення рядка, який розділений на групи символів , у вигляді зв'язного списку з елементами одного і того ж розміру
Якщо в зв'язному списку використовуються елементи різного розміру(рис.5.12), то перед адресним вказівником необхідно розміщувати спеціальний символ, який вказує, що наступний елемент є вказівником. Зрозуміло, що такий символ не повинен входити до алфавіту, який використовується для формування рядків.
Рис. 5.12 - Приклад представлення рядка, який розділений на групи символів , у вигляді зв'язного списку з елементами різного розміру
