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:
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.
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.
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.
SQL Server Tutorial - One-to-many and many-to-many table relationships