Relacje w bazie danych odnoszą się do sposobu, w jaki dane są powiązane lub związane ze sobą w różnych tabelach w bazie danych. Relacje pozwalają na tworzenie bardziej złożonych struktur danych, które odzwierciedlają rzeczywiste zależności między różnymi elementami informacji. Istnieją różne rodzaje relacji w bazach danych, ale trzy najważniejsze to:

  1. Relacja jeden do jeden (One-to-One - 1:1) W tym rodzaju relacji jeden rekord w jednej tabeli jest powiązany z dokładnie jednym rekordem w innej tabeli. Przykładowo, możemy mieć tabelę "Osoby" i tabelę "Adresy", gdzie każda osoba ma tylko jeden adres zamieszkania, a każdy adres jest przypisany tylko do jednej osoby.
  2. Relacja jeden do wielu (One-to-Many - 1:N) W tym rodzaju relacji jeden rekord w jednej tabeli jest powiązany z wieloma rekordami w innej tabeli. Przykładowo, w bazie danych sklepu internetowego, tabela "Kategorie produktów" może być powiązana z tabelą "Produkty", gdzie jedna kategoria może zawierać wiele produktów, ale każdy produkt jest przypisany tylko do jednej kategorii.
  3. Relacja wiele do wielu (Many-to-Many - N:M) W tym rodzaju relacji wiele rekordów w jednej tabeli może być powiązanych z wieloma rekordami w innej tabeli, a vice versa. Aby obsłużyć ten rodzaj relacji, często używa się tabeli pośredniej (łącznikowej), która przechowuje powiązania między rekordami. Przykładowo, w bazie danych uczelnianej możemy mieć tabelę "Studenci" i tabelę "Kursy", gdzie wiele studentów może uczestniczyć w wielu kursach, a jednocześnie jeden kurs może mieć wielu studentów. Tabela łącznikowa "Zapisy" zawierałaby informacje o tym, którzy studenci są zapisani na jakie kursy.

Przykłady relacji w bazie danych Microsoft SQL Server:

  1. Relacja jeden do jeden (One-to-One):

    Przykład: Zarządzanie danymi osobowymi pracowników i ich informacjami kontaktowymi.

    CREATE TABLE Employees (
        EmployeeID INT PRIMARY KEY,
        FirstName NVARCHAR(50),
        LastName NVARCHAR(50)
    );
    
    CREATE TABLE ContactInfo (
        ContactID INT PRIMARY KEY,
        Email NVARCHAR(100),
        Phone NVARCHAR(15),
        EmployeeID INT UNIQUE,
        FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
    );
    

    W tym przypadku każdy pracownik może mieć tylko jedno zestawienie informacji kontaktowych, co odpowiada relacji jeden do jeden.

  2. Relacja jeden do wielu (One-to-Many):

    Przykład: Sklep internetowy z produktami i kategoriami.

    CREATE TABLE ProductCategories (
        CategoryID INT PRIMARY KEY,
        CategoryName NVARCHAR(255) NOT NULL
    );
    
    CREATE TABLE Products (
        ProductID INT PRIMARY KEY,
        ProductName NVARCHAR(255) NOT NULL,
        CategoryID INT FOREIGN KEY REFERENCES ProductCategories(CategoryID)
    );
    
    

    Każda kategoria w tabeli "ProductCategories" może zawierać wiele produktów ale każdy produkt ma tylko jedną kategorię, co odpowiada relacji jeden do wielu.

  3. Relacja wiele do wiele (Many-to-Many):

    Przykład: System zarządzania kursami i studentami.

    CREATE TABLE Students (
        StudentID INT PRIMARY KEY,
        FirstName NVARCHAR(50),
        LastName NVARCHAR(50)
    );
    
    CREATE TABLE Courses (
        CourseID INT PRIMARY KEY,
        CourseName NVARCHAR(100)
    );
    
    CREATE TABLE StudentCourses (
        StudentCourseID INT PRIMARY KEY,
        StudentID INT,
        CourseID INT,
        FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
        FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
    );
    

    W tym przypadku tabela "StudentCourses" działa jako tabela łącznikowa, pozwalając studentom być zapisanymi na wiele kursów i jednocześnie kursy mogą mieć wiele studentów.

Materiały

SQL Server Tutorial - One-to-many and many-to-many table relationships

Relational Database Concepts

Learn SQL: Types of relations