DBMS - 관계형 데이터 모델

안녕하세요, 데이터베이스 열정가 여러분! 오늘 우리는 관계형 데이터 모델의 세계로 흥미로운 여정을 떠납니다. 여러분의 친절한 이웃 컴퓨터 교사로서, 저는 데이터베이스 관리 시스템(DBMS)의 이 기본 개념을 안내해 드리겠습니다. 프로그래밍에 새로운 사람이라면 걱정하지 마세요 - 우리는 기본에서 시작하여 점진적으로 올라갈 것입니다. 그러니 커피 한 잔을 손에 들고, 이제 시작해 보겠습니다!

DBMS - Relational Data Model

개념

관계형 데이터 모델이란?

거대한 도서관을 정리하는 상상해 봅시다. 책, 저자, 장르, 출판사가 있습니다. 이 모든 정보를 효율적으로 어떻게 관리할까요? 그게 바로 관계형 데이터 모델의 필요성입니다!

관계형 데이터 모델은 데이터베이스 내에서 정보를 테이블(또는 관계)로 구조화하고, 행과 열로 조직하는 방법입니다. 이는 상호 연결된 시리즈의 스프레드시트를 만드는 것과 같습니다.

다음은 예제로 설명해 보겠습니다:

CREATE TABLE Books (
BookID INT PRIMARY KEY,
Title VARCHAR(100),
AuthorID INT,
GenreID INT,
PublisherID INT
);

CREATE TABLE Authors (
AuthorID INT PRIMARY KEY,
Name VARCHAR(50),
BirthDate DATE
);

이 예제에서 우리는 두 개의 테이블: Books와 Authors를 생성했습니다. 각 테이블은 다른 속성을 설명하는 열(필드)을 가지고 있습니다. BookIDAuthorID는 각 테이블의 레코드를 고유하게 식별하는 데 사용됩니다.

관계 모델의 주요 구성 요소

  1. 테이블(관계): 데이터를 저장하는 주요 구조입니다. 도서관 예제에서 Books와 Authors가 테이블입니다.

  2. 속성(열): 테이블 내의 엔티티의 특성을 나타냅니다. 예를 들어, Title과 Name은 속성입니다.

  3. 튜플(행): 테이블의 각 행은 엔티티의 단일 레코드 또는 인스턴스를 나타냅니다.

  4. 도메인: 속성에 허용할 수 있는 값을 정의합니다. 예를 들어, BookID의 도메인은 양수 정수일 수 있습니다.

  5. : 레코드를 고유하게 식별하고 테이블 간의 관계를 설정하는 데 사용되는 특별한 속성입니다.

키의 유형

다음 표를 통해 키에 대해 더 깊이 탐구해 보겠습니다:

키 유형 설명 예제
주요 키 테이블 내 각 레코드를 고유하게 식별합니다 Books 테이블의 BookID
외래 키 다른 테이블의 주요 키를 참조합니다 Books 테이블의 AuthorID
후보 키 주요 키로 사용될 수 있는 잠재적인 키 책의 ISBN
복합 키 여러 열로 구성된 키 (CourseID, StudentID)의 수업 등록 테이블

관계

관계형 모델의 가장 강력한 측면 중 하나는 테이블 간의 관계를 설정할 수 있는 능력입니다. 주로 세 가지 유형이 있습니다:

  1. 1대1(1:1): 테이블 A의 각 레코드가 테이블 B의 하나의 레코드와 관련됩니다.

예제:

CREATE TABLE Passport (
PassportID INT PRIMARY KEY,
PassportNumber VARCHAR(20),
ExpiryDate DATE,
CitizenID INT UNIQUE,
FOREIGN KEY (CitizenID) REFERENCES Citizens(CitizenID)
);
  1. 1대多(1:N): 테이블 A의 하나의 레코드가 테이블 B의 여러 레코드와 관련됩니다.

예제:

CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderDate DATE,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
  1. 多對多(M:N): 테이블 A의 여러 레코드가 테이블 B의 여러 레코드와 관련됩니다.

예제:

CREATE TABLE StudentCourses (
StudentID INT,
CourseID INT,
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);

제약 조건

이제 제약 조건에 대해 이야기해 보겠습니다 - 데이터의 일관성과 정확성을 유지하는 규칙입니다. 이는 도서관에서 책이 올바르게 분류되고 정리되도록 도와주는 도서관장과 같습니다.

제약 조건의 유형

다음 표를 통해 제약 조건의 유형을 살펴보겠습니다:

제약 조건 유형 설명 예제
NOT NULL 열이 NULL 값을 가질 수 없도록 합니다 Name VARCHAR(50) NOT NULL
UNIQUE 열의 모든 값이 고유해야 합니다 Email VARCHAR(100) UNIQUE
PRIMARY KEY 테이블 내 각 레코드를 고유하게 식별합니다 StudentID INT PRIMARY KEY
FOREIGN KEY 테이블 간의 참조 일관성을 보장합니다 FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID)
CHECK 열의 모든 값이 특정 조건을 만족해야 합니다 CHECK (Age >= 18)
DEFAULT 열에 기본 값을 설정합니다 Balance DECIMAL(10,2) DEFAULT 0.00

다음은 제약 조건을 적용한 예제입니다:

CREATE TABLE Students (
StudentID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Email VARCHAR(100) UNIQUE,
Age INT CHECK (Age >= 18),
EnrollmentDate DATE DEFAULT CURRENT_DATE,
DepartmentID INT,
FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
);

이 예제에서:

  • StudentID는 주요 키입니다.
  • Name은 NULL 값을 가질 수 없습니다.
  • Email은 각 학생에게 고유해야 합니다.
  • Age는 18세 이상이어야 합니다.
  • EnrollmentDate는 지정되지 않으면 현재 날짜로 설정됩니다.
  • DepartmentID는 외래 키로 Departmenets 테이블을 참조합니다.

이 제약 조건들은 데이터의 일관성과 정확성을 유지하는 데 도움이 됩니다. 도서관에서 책이 올바르게 분류되고 정리되도록 도와주는 도서관장과 같은 역할을 합니다.

이번에 소개한 관계형 데이터 모델에 대해 마무리하며, 이 접근 방식이 얼마나 강력하고 조직적일 수 있는지 이해하기 시작했기를 바랍니다. 데이터베이스 학습은 여정입니다. 모든 것이 금방 이해되지 않으면 걱정하지 마세요. 테이블 생성, 관계 설정, 제약 조건 설정을 연습하면 곧 프로처럼 효율적이고 견고한 데이터베이스 구조를 설계할 수 있을 것입니다!

다음 강의에서는 SQL을 사용하여 이 관계 구조를 쿼리하는 방법에 대해 더 깊이 탐구할 것입니다. 그 때까지, 데이터 모델링을 즐기세요!

Credits: Image by storyset