Good Morning

데이터베이스 관계의 이해: 동영상과 재생목록 예시 본문

Database

데이터베이스 관계의 이해: 동영상과 재생목록 예시

욘쥰 2024. 8. 24. 22:13

 

데이터베이스 설계에서 테이블 간의 관계를 올바르게 설정하는 것은 매우 중요합니다. 이 포스트에서는 동영상과 재생목록 간의 관계를 예로 들어 1대1, 1대다, 다대다 관계를 설명하고, 각 관계의 장단점을 살펴보겠습니다.

1. 1대1 관계

1대1 관계에서는 하나의 동영상이 오직 하나의 재생목록에만 속할 수 있고, 하나의 재생목록도 오직 하나의 동영상만 포함할 수 있습니다.

장점:

  • 구조가 단순함
  • 특정 목적(예: 단일 에피소드 시리즈)에 적합할 수 있음

단점:

  • 매우 제한적이며 현실적이지 않음
  • 동일한 동영상을 여러 재생목록에 추가할 수 없음
  • 재생목록에 여러 동영상을 포함할 수 없음

이 관계는 실제 비디오 플랫폼에서는 거의 사용되지 않습니다.

2. 1대다 관계

1대다 관계에서는 하나의 재생목록이 여러 동영상을 포함할 수 있지만, 하나의 동영상은 오직 하나의 재생목록에만 속할 수 있습니다.

장점:

  • 1대1 관계보다 유연함
  • 구현이 다대다 관계보다 간단할 수 있음

단점:

  • 동일한 동영상을 여러 재생목록에 추가할 수 없음
  • 실제 사용 사례와 맞지 않을 수 있음

1대다 관계의 SQL 예시

CREATE TABLE Playlists (
    playlist_id INT PRIMARY KEY,
    playlist_name VARCHAR(255)
);

CREATE TABLE Videos (
    video_id INT PRIMARY KEY,
    video_title VARCHAR(255),
    playlist_id INT,
    FOREIGN KEY (playlist_id) REFERENCES Playlists(playlist_id)
);

 

이 구조에서 Videos 테이블의 playlist_id 열은 외래 키로, 각 동영상이 하나의 플레이리스트에만 속할 수 있게 합니다.

주의점: 외래 키 열에는 하나의 값만 들어갈 수 있습니다. 즉, 하나의 동영상을 여러 플레이리스트에 동시에 연결할 수 없습니다.

3. 다대다 관계

다대다 관계에서는 하나의 동영상이 여러 재생목록에 속할 수 있고, 하나의 재생목록도 여러 동영상을 포함할 수 있습니다.

장점:

  • 가장 유연한 구조
  • 실제 사용 사례와 가장 잘 맞음
  • 사용자가 동영상을 여러 재생목록에 자유롭게 추가할 수 있음

단점:

  • 구현이 더 복잡할 수 있음
  • 중간 테이블(junction table)이 필요하여 데이터베이스 구조가 복잡해질 수 있음

다대다 관계의 SQL 예시

CREATE TABLE Playlists (
    playlist_id INT PRIMARY KEY AUTO_INCREMENT,
    playlist_name VARCHAR(255) NOT NULL
);

CREATE TABLE Videos (
    video_id INT PRIMARY KEY AUTO_INCREMENT,
    video_title VARCHAR(255) NOT NULL,
    video_url VARCHAR(255) NOT NULL
);

CREATE TABLE PlaylistVideos (
    playlist_id INT,
    video_id INT,
    PRIMARY KEY (playlist_id, video_id),
    FOREIGN KEY (playlist_id) REFERENCES Playlists(playlist_id),
    FOREIGN KEY (video_id) REFERENCES Videos(video_id)
);

 

이 구조에서 PlaylistVideos 테이블은 중간 테이블 역할을 하여 플레이리스트와 동영상 간의 다대다 관계를 관리합니다.

결론

실제 비디오 플랫폼에서는 대부분 다대다 관계를 사용합니다. 이는 사용자가 동일한 동영상을 여러 재생목록에 추가하고, 각 재생목록에 여러 동영상을 포함할 수 있도록 하는 가장 유연한 방식이기 때문입니다.

데이터베이스 설계 시 항상 실제 사용 사례와 요구사항을 고려하여 적절한 관계를 선택해야 합니다. 때로는 단순한 1대다 관계로 충분할 수 있지만, 많은 경우 다대다 관계의 유연성이 필요합니다.

이러한 관계의 이해는 효율적이고 확장 가능한 데이터베이스 시스템을 설계하는 데 큰 도움이 될 것입니다.