Бази даних - урок 3
Реляційні бази даних, як ми вже знаємо, складаються з таблиць. Кожна таблиця складається з стовпців (їх називають полями або атрибутами) і рядків (їх називають записами або кортежами). Таблиці в реляційних базах даних мають ряд властивостей. Основними є такі:
- У таблиці не може бути двох однакових рядків. В математиці таблиці, що володіють такою властивістю, називають відносинами - по-англійськи relation, звідси і назва - реляційні.
Теоретично (на папері) ми можемо все це розташувати в одній таблиці, наприклад, так:
Але це суперечить властивості атомарности (одне значення в одній комірці), а в стовпчиках Теми і Повідомлення у нас передбачається необмежену кількість значень. Значить, нашу таблицю треба розбити на три: Користувачі, Теми і Повідомлення.
Наша таблиця Користувачі задовольняє всім умовам. А ось таблиці Теми і Повідомлення - немає. Адже в таблиці не може бути двох однакових рядків, а де гарантія, що один користувач не залишить два однакових повідомлення, наприклад:
Крім того, ми знаємо, що кожне повідомлення обов'язково відноситься до будь-якої теми. А як це можна дізнатися з наших таблиць? Ніяк. Для вирішення цих проблем, в реляційних базах даних існують ключі.
Сурогатний ключ являє собою додаткове поле в базі даних. Як правило, це порядковий номер запису (хоча ви можете задавати їх на свій розсуд, контролюючи, щоб вони були унікальні). Давайте внесемо поля первинних ключів в наші таблиці:
Тепер кожен запис в наших таблицях унікальна. Нам залишилося встановити відповідність між темами і повідомленнями в них. Робиться це також за допомогою первинних ключів. У таблицю повідомлення ми додамо ще одне поле:
Тепер зрозуміло, що повідомлення з id = 2 належить темі "Про рибалку" (id теми = 4), створеної Васею, а решта повідомлення належати темі "Про рибалку" (id теми = 1), створеної Кирилом. Таке поле називається зовнішній ключ (скорочено FK - foreign key). Кожне значення цього поля відповідає якомусь первинному ключу з таблиці "Теми". Так встановлюється однозначна відповідність між повідомленнями і темами, до яких вони належать.
Останній нюанс. Припустимо, у нас додався новий користувач, і звуть його теж Вася:
Наша база даних готова. Схематично її можна представити так:
У нашій маленькій базі даних всього три таблички, а якби їх було 10 або 100? Зрозуміло, що відразу неможливо уявити все таблиці, поля і зв'язку, які нам можуть знадобитися. Саме тому проектування бази даних починається з її концептуальної моделі, яку ми і розглянемо в наступному уроці.
Якщо цей сайт виявився вам корисний, ви можете допомогти в його розвитку, поставивши одну з цих посилань на свій сайт.