Поняття бази даних, відносини, ключі та ін, MS SQL Server, Бази даних, статті

Сергій Катков, www.lab.hop.ru/delphi/sql/les2/les2.shtml

Для початку нам следут розібратися з поняттями -дуже модна нині тема. Я маю на увазі розбирання іпоняття. 😉 Нам слід переконатися, що ми будемоправильно розуміти один одного і називатиоднакові речі однаковими іменами. Томувизначимося з термінами. У нашому випадку ми будеморозглядати спрощений набір термінів. Взагалі,реляційна теорія в чистому вигляді містить дужебагато термінів і понять. Але в реальних системахуправління базами даних (СКБД) ніхто ніколи їїповністю не дотримувався. Завжди щосьспрощується, щось додається своє. Так як мирозглядаємо не голу теорію, а реальнопрацюють Delhi, або MS SQL Server, то нас цікавитьтеорія, яка відноситься саме до них. Длябажаючих вивчити теорію реляційних баз даних вчистому вигляді можу порекомендувати книжку”Введення в системи баз даних.” Автор К. Дж.Дейт

Таблиця

Таблиця для нас – сукупність рядків і стовпців.Майже повна аналогія з таблицями на папері.Важливі уточнення: Кожен стовпець повинен матиім’я, унікальне в межах цієї таблиці. А рядки,в теорії баз даних, можуть слідувати в будь-якомупорядку, і не мають номерів. Хоча Delphi, FoxPro та іншідодають до кожного рядка номер, але при вибірціданих в SQL, ви його, в загальному випадку, не отримаєте.Тому до кожного рядка прийнято додаватинебудь ідентифікатор, для того, щоб потімможна було легко знайти її. Детальніше см. ключів цьому ж уроці.

Ставлення

У реляційної теорії баз даних, поділяютьпоняття таблиці і відносини. Наприклад, ввідношенні не обумовлюється порядок стовпців, атільки їх набір. Ще для відносин визначеніобмеження типу неможливості містити двіабсолютно однакові рядки. Відмінності мисформулюємо в одній фразі: Ставлення – доситьабстрактний вигляд об’єкта, а таблиця – йогоконкретне зображення. Тому ми, в подальшому,для спрощення, будемо вважати, що це одне і те ж.Але важливо не забувати, що в чистій теорії базданих – це різні поняття.

Ключі

Що таке ключ? Набір стовпців. Він можесостоятьіз одного стовпця, або охоплювати всістовпці таблиці. Для чого нам потрібні ключі? Дляідентифікації рядків таблиці. У чистійреляційної теорії баз даних це єдинийспосіб послатися на рядок. Ключі бувають різні -потенційні, первинні, альтернативні,зовнішні, індексні, хеш-ключі, ключі сортування,вторинні ключі, ключі шифрування і розшифровкиі т.д. Але ми домовлялися, що будеморозглядати тільки те, що нам знадобиться вроботі, ось і розглянемо. Бажаючим углібіть своїзнання можу порадити прочитати вжезгадувану вище книгу Дейта.

Потенційні ключі.Потенційним ключембудемо називати таку комбінацію стовпців,яка має такі властивості:

Розглянемо, наприклад, таку таблицю:

№ паспорта

Прізвище

Ім’я

По батькові

Посада

123456

Іванов

Іван

Іванович

Директор

234567

Петров

Петро

Іванович

Його зам

345678

Сидорова

Марія

Іванівна

Секретарка

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

Зрозуміло, що батькові не може бутипотенційним ключем – є збіги. Прізвище -може, якщо тільки ми не плануємо появинових рядків у таблиці. Можна взяти комбінаціюпрізвища і посади, навряд чи у нас буде двадиректора-однофамільця. Номер паспорта такожпідходить на роль потенційного ключа. Я думаю визрозуміли мою думку – до кожної конкретної таблиціпотенціальнх ключів може бути багато. Вибірпотенційного ключа – справа програміста. Той женомер паспорта може не підійти, якщо ми очікуємокого-небудь з підробленим паспортом 😉 Вибірробиться щоразу заново для кожної ситуації.

Первинні ключі. Отже з потенційнимиключами визначилися. Первинний ключ – це одинз потенційних ключів. Той, який нам більшесподобається. Вам який більше подобається? Вреальної ситуації, новачок вибере номерпаспорта. А що вибере професіонал?Професіонал додасть ще одне поле-лічильник,яке буде містити унікальне для кожноїзаписи значення. В Delphi такий тип поля називаєтьсяAutoIncrement, в SQL Server є цілих 2 варіанти – TimeStamp ісвойтсва Identity поля. Детальніше цей момент мирозглянемо в уроках по в взаємодії з SQLServer’ом. Про корисність введення додатковогополя, так званого “сурогатного ключа”,можна почитати тут. Адже ми зібралися статипрофесіоналами? Ось і повчимося у розумних людей.
Лірічекое відступ – розумна людина, а тимбільше професіонал ніколи не скаже “Я і таквсе знаю, нічому мене не навчиш “. Тому що вінзнає – завжди є чому вчитися.

Альтернативні ключі. Первинний ключ можебути тільки один на всю таблицю! Після виборупервинного ключа з набору потенційних ключів,залишилися ключі називаються альтернативні. Цетак, для знання термінології. Поки нам про нихбільше нічого знати не треба.

Зовнішні ключі. Ця тема тісно пов’язана знаступної – “Деякіправилами побудови баз даних “ ВЗокрема з поняттям нормалізаціїЦе буде потім, а зараз тільки деякімоменти.
Коли ми створюємо якусь базу даних,наприклад для нарахування зарплати, нам не зручновсіх працівників згадувати в одній таблиці. Якщо,наприклад, який-небудь з них згадується там неодин раз (зарплата, премія, надбавки, зняття,податки тощо), то при зміні його / її прізвища требабуде пробігтися по всіх рядках, і поміняти всевходження. Це незручно. Є й інші приводирозділити таку таблицю, про них читайте внаступному уроці, а поки просто приймемо як фактнеобхідність її поділу. Так от, маємо двітаблиці:

Код працівника

Вид руху

Сума

1

Оклад

100

1

Премія

30

1

Податки

-25

2

Оклад

90

Код працівника

Фімілія

Ім’я

По батькові

1

Іванов

Іван

Іванович

2

Петров

Петро

Іванович

3

Сидорова

Марія

Іванівна

У першій таблиці – з грошима – стовпчик “Кодпрацівника “називається зовнішнім ключем.Ясно, що він не може існувати безвідповідного рядка з другої таблиці, вякої стовпчик “Код працівника” – вжезнайомий нам звичайний первинний ключ. Другатаблиця – з прізвищами – є ніби”Довідником прізвищ” для першої.
Хоча чистий реляційна теорія вимагає, щобзовнішні ключі завжди посилалися на первинніключі, ми це вимога зведений до простоїрекомендації: бувають ситуації, коли одна і та жтаблиця може служити довідником різниміншим, причому в різних якостях. А первиннийключ, як ми знаємо, пожет бути тільки один.

Посилальна цілісність. У попередньомупараграфі ми обійшли питання “А що буде, якщоне знайдеться працівника з кодом, який мивикористовували? “Нічого хорошого не буде. Такийситуації треба всіляко уникати.
Посилальної цілісністю, По-англійськи Refential
Integriyr
, Називається такий стан, коли у насвсе що треба правильно знаходиться. Контрольпосилальної цілісності – забезпечення такогостану.
А якщо користувач захоче видалити одне зпрацівників? За ситуації дивитися треба – колипросто заборонити такі дії, коли видалитивсі відповідні записи з іншої таблиці(Так зване “каскадне видалення”). Цеймомент дуже важливий – ні при яких ситуаціяхне можна допускати порушення посилальноїцілісності.

База даних. Ну ось, нарешті, і добралися. Ащо ж таке база даних? Базою даних ми будемоназивати сукупність таблиць, індексів, збереженихпроцедур, тригерів і всього іншого, щостосується нашого проекту. В Access’е, наприклад, таквзагалі все це в одному файлі зберігається.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*