Розуміння сутностей, атрибутів та відносин сутностей

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

1. Що таке сутності?

Сутність представляє реальний об'єкт або концепцію, про яку можна зберігати дані в базі даних. Вона є основним будівельним блоком моделі "сутність-відносини" (Entity-Relationship Model, ERM).

Ключові характеристики сутностей

  • Унікальність: Кожна сутність є унікальною та ідентифікованою.
  • Представлення реального світу: Сутності відповідають конкретним або абстрактним об'єктам, таким як людина, місце чи процес.

Типи сутностей

  1. Сильні сутності:
  • Існують незалежно від інших сутностей.
  • Мають первинний ключ для унікальної ідентифікації кожного екземпляра.
  • Приклад: у базі даних університету сутності, такі як Студент або Курс, є сильними сутностями.

2. Слабкі сутності:

  • Залежать від сильної сутності для свого існування.
  • Не мають первинного ключа, але використовують комбінацію своїх атрибутів та первинний ключ пов'язаної сильної сутності як складений ключ.
  • Приклад: сутність Залежна в базі даних страхування (залежить від сутності Поліс).

2. Що таке атрибути?

Атрибути описують властивості або характеристики сутності. Вони представляють дані, які ми хочемо зберегти про сутність.

Ключові характеристики атрибутів

  • Кожен атрибут містить одне значення інформації про сутність.
  • Атрибути — це стовпці в таблиці бази даних для відповідної сутності.

Типи атрибутів

Прості атрибути:

  • Містять атомарні значення, які не можна поділити на частини.
  • Приклад: Ім'я, Вік.
  1. Складені атрибути:
  • Можуть бути поділені на менші частини.
  • Приклад: Повне ім'я можна розділити на Ім'я та Прізвище.

2. Виведені атрибути:

  • Не зберігаються безпосередньо, але виводяться з інших атрибутів.
  • Приклад: Вік можна вивести з Дати народження.

3. Багатозначні атрибути:

  • Можуть мати кілька значень для одного екземпляра сутності.
  • Приклад: сутність Людина може мати атрибут Телефони.

4. Ключові атрибути:

  • Унікально ідентифікують екземпляр сутності.
  • Приклад: ID студента для сутності Студент.

3. Що таке відносини?

Відносина визначає, як дві або більше сутностей пов'язані між собою. Вона встановлює асоціації між сутностями в базі даних.

Ключові характеристики відносин

  • Представляються як дієслово або фраза (наприклад, "записується на", "керує").
  • Може включати дві або більше сутностей.

Типи відносин

  1. Один до одного (1:1):
  • Кожен екземпляр сутності A пов'язаний з одним і тільки з одним екземпляром сутності B, і навпаки.
  • Приклад: кожна людина в компанії має один паспорт.

2. Один до багатьох (1:N):

  • Один екземпляр сутності A пов'язаний з кількома екземплярами сутності B, але сутність B пов'язана лише з одним екземпляром сутності A.
  • Приклад: вчитель може навчати кількох студентів.

3. Багато до багатьох (M:N):

  • Кілька екземплярів сутності A пов'язані з кількома екземплярами сутності B.
  • Приклад: студенти записуються на кілька курсів, і кожен курс може мати кілька студентів.

4. Самозв'язкові відносини:

  • Сутність пов'язана сама з собою.
  • Приклад: працівники можуть керувати іншими працівниками.
    Діаграма сутностей і відносин (ERD)

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

Компоненти ERD

  • Сутності: представлені прямокутниками.
  • Атрибути: представлені овали, підключені до їхніх сутностей.
  • Відносини: представлені діамантами між сутностями.
  • Кардинальність: вказує кількість екземплярів, залучених у відносини.

Приклад ERD

Розглянемо просту базу даних університету:

  • Сутності: Студент, Курс, Запис.
  • Атрибути: StudentID, Name, CourseID, CourseName.
  • Відносини: Студент записується на Курс.
+--------------+  
 | Student |  
 +--------------+  
 | StudentID |  
 | Name |  
 +--------------+  
 ^  
 |  
 is enrolled in   
 |  
 v  
 +--------------+  
 | Course |  
 +--------------+  
 | CourseID |  
 | CourseName |  
 +--------------+

5. Реальні застосування

Електронна комерція:
Сутності: Клієнт, Замовлення, Продукт.
Відносини: Клієнти роблять замовлення, а замовлення включають продукти.

Охорона здоров’я:
Сутності: Пацієнт, Лікар, Запис на прийом.
Відносини: Пацієнти записуються на прийом до лікаря.

Соціальні мережі:
Сутності: Користувач, Пост, Коментар.
Відносини: Користувачі створюють пости та коментують пости.

6. Приклад для підсумку всього

Розглянемо двох друзів, Deepanshu та Gaurang, як приклад для розуміння сутностей, атрибутів та відносин сутностей.

Сутність

Сутність — це людина, об'єкт або річ, про яку ми хочемо зберігати інформацію. У цьому випадку Deepanshu та Gaurang — це дві сутності в категорії Людина.

Атрибути

Атрибути — це деталі про сутність. Для сутностей Deepanshu та Gaurang атрибути можуть бути:

  • Ім'я: Deepanshu, Gaurang
  • Вік: 22, 21
  • Хобі: Подорожі, Геймінг
  • Місто: Ноїда, Делі

Відносина сутностей

Відносини показують, як сутності пов'язані між собою. Наприклад:

  • Відносина дружби: Deepanshu та Gaurang — друзі.
    Цю відносину можна представити так:
    Deepanshu ← — є другом — → Gaurang

Простий реальний приклад бази даних

Якщо ми зберігатимемо це в базі даних:

  1. Сутності (Таблиця Person):

pic

2. Відносина (Таблиця Friendship):

pic

Цей простий приклад показує, як сутності, їхні атрибути та відносини працюють у базі даних!

6. Кращі практики для проектування сутностей та відносин

  1. Чітко визначте всі сутності та атрибути перед проектуванням бази даних.
  2. Уникайте надмірних атрибутів і відносин.
  3. Використовуйте змістовні назви для сутностей, атрибутів і відносин.
  4. Нормалізуйте базу даних, щоб зменшити надмірність і покращити узгодженість.
  5. Переконайтеся, що відносини та кардинальності точно відображають вимоги реального світу.

Перекладено з: Understanding Entities, Attributes, and Entity Relationships

Leave a Reply

Your email address will not be published. Required fields are marked *