SQL 데이터베이스에서의 Entity 연관 관계 이해하기

이상민·2024년 8월 19일
0

SQL 데이터베이스에서 Entity 연관 관계 정리

데이터베이스 설계에서 엔터티 간의 연관 관계를 제대로 이해하고 구현하는 게 정말 중요하다. 테이블 간의 관계를 명확히 정의해야 데이터 무결성을 유지하고, 효율적인 쿼리 작성을 할 수 있기 때문.

1. 엔터티(Entity) 개념

SQL에서 엔터티는 결국 테이블. 예를 들어, 고객 관리 시스템에서 "고객"과 "주문"은 각각 별도의 테이블로 존재. 각 테이블은 여러 컬럼으로 구성되며, 이 컬럼들이 해당 엔터티의 속성을 나타냄.

-- 고객 테이블
CREATE TABLE Customer (
    CustomerID INT PRIMARY KEY,  -- 고객을 고유하게 식별하는 기본 키
    Name VARCHAR(100),
    Email VARCHAR(100)
);

-- 주문 테이블
CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    OrderDate DATE,
    CustomerID INT,  -- 외래 키로 Customer 테이블의 CustomerID를 참조
    FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID)
);

여기서 Customer와 Orders는 각각 하나의 엔터티. Orders 테이블의 CustomerID는 Customer 테이블의 CustomerID를 참조함으로써 두 테이블이 연결됨.

2. 엔터티 간의 연관 관계

SQL에서는 엔터티 간의 연관 관계를 외래 키(Foreign Key)로 구현. 이는 하나의 테이블에서 다른 테이블의 기본 키를 참조하게 만들어 두 테이블을 연결하는 방식.

3. 엔터티 연관 관계의 종류와 구현 방법

  • 1:1 관계 (One-to-One)

한 테이블의 레코드가 다른 테이블의 레코드와 1:1로 연결될 때.
예: 사용자와 사용자 프로필 정보를 별도의 테이블로 나눌 때.
SQL 예시:

-- 사용자 테이블
CREATE TABLE User (
    UserID INT PRIMARY KEY,
    Username VARCHAR(100)
);

-- 프로필 테이블
CREATE TABLE Profile (
    ProfileID INT PRIMARY KEY,
    UserID INT,
    Address VARCHAR(255),
    FOREIGN KEY (UserID) REFERENCES User(UserID)
);
  • 관계 (One-to-Many)

한 테이블의 레코드가 다른 테이블의 여러 레코드와 연결될 때.
예: 한 고객이 여러 주문을 할 수 있을 때.
SQL 예시: Customer와 Orders 관계가 여기에 해당.

  • 관계 (Many-to-Many)

여러 테이블이 서로 다수의 레코드와 연결될 때. 이 경우 조인 테이블을 사용해야 함.
예: 학생과 수업 간의 관계.
SQL 예시:

-- 학생 테이블
CREATE TABLE Student (
    StudentID INT PRIMARY KEY,
    Name VARCHAR(100)
);

-- 수업 테이블
CREATE TABLE Course (
    CourseID INT PRIMARY KEY,
    CourseName VARCHAR(100)
);

-- 학생-수업 조인 테이블
CREATE TABLE StudentCourse (
    StudentID INT,
    CourseID INT,
    FOREIGN KEY (StudentID) REFERENCES Student(StudentID),
    FOREIGN KEY (CourseID) REFERENCES Course(CourseID),
    PRIMARY KEY (StudentID, CourseID)
);

4. 엔터티 관계 설정이 중요한 이유

  1. 데이터 무결성 유지: 외래 키를 통해 관계를 정의하면 데이터베이스에서 일관성을 자동으로 관리해줌.

  2. 효율적인 데이터 검색: 관계 설정이 잘 되어 있으면 조인(Join) 연산이 쉬워지고, 성능이 향상됨.

  3. 데이터 중복 방지: 잘못된 관계 설정은 데이터 중복을 초래할 수 있음. 특히 1관계를 N관계로 잘못 정의하는 실수를 주의.

  4. 비즈니스 로직 반영: 데이터베이스 설계는 실제 비즈니스 로직을 반영해야 함. 관계 설정이 부정확하면 시스템이 잘못된 프로세스를 따를 수 있음.

추가적으로 고려할 점

관계를 명확하게 정의해두면 데이터베이스가 확장되거나 유지보수할 때 큰 도움이 됨. 확장성이나 성능 측면에서 유리해짐.

마무리

  • DB 테이블에서는 테이블 사이의 연관관계를 FK(외래 키)로 맺을 수 있고 방향 상관없이 조회가 가능함.
  • Entity에서는 상대 Entity를 참조하여 Entity 사이의 연관관계를 맺을 수 있음.
  • 하지만 상대 Entity를 참조하지 않고 있다면 상대 Entity를 조회할 수 있는 방법이 없음.
  • 따라서 Entity에서는 DB 테이블에는 없는 방향의 개념이 존재.

외래 키 주인만이 왜래 키 를 등록,수정,삭제할 수 있으며, 주인이 아닌 쪽은 오직 외래 키를 읽기만 가능

앞으로 실습하면서 이 개념들을 바탕으로 더 복잡한 데이터베이스 설계와 최적화 방법을 탐구할 예정.

profile
안녕하세요

0개의 댓글