데이터베이스 - 관계(Relationship)와 키(Key)

이강용·2024년 7월 29일
0

CS

목록 보기
109/109

데이터베이스에서의 관계(Relationship)

  • 데이터베이스에서 관계는 두 개 이상의 테이블 간의 연결을 나타내며 주로 엔터티 간의 관계를 모델링함

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

  • 한 테이블의 행이 다른 테이블의 행과 정확히 하나의 관계를 가질 때 사용
  • 예시 : 사용자 테이블과 사용자 프로필 테이블이 1 : 1 관계일 수 있음
    • 각 사용자는 하나의 프로필을 가지고 각 프로필은 하나의 사용자와 연관

1 : N 관계 (One-to-Many Relationship)

  • 한 테이블의 행이 다른 테이블의 여러 행과 관계를 가질 때 사용
  • 예시 : 고객 테이블과 주문 테이블이 1 : N 관계일 수 있음
    • 각 고객은 여러 주문을 할 수 있지만, 각 주문은 하나의 고객에게만 속함

N : M 관계 (Many-to-Many Relationship)

  • 두 테이블의 행이 서로 여러 개의 관계를 가질 때 사용
  • 예시 : 학생 테이블과 수업 테이블이 N : M 관계일 수 있음
    • 각 학생은 여러 수업을 들을 수 있고, 각 수업에는 여러 학생이 등록될 수 있음

데이터베이스에서의 키(Key)

  • 키는 데이터베이스 테이블에서 각 행을 고유하게 식별하기 위해 사용
  1. 슈퍼 키(Super Key)
    • 테이블의 각 행을 고유하게 식별할 수 있는 하나 이상의 열 또는 열의 집합
      ▪︎ 모든 후보 키, 기본 키, 복합 키가 슈퍼 키의 부분 집합
      ▪︎ 예시 : user_id, emia, user_id와 email의 조합이 슈퍼 키가 될 수 있음
  1. 기본 키(Primary Key)
    • 각 행을 고유하게 식별하는 데 사용되는 하나 이상의 열
    • 유일성 : 각 행을 고유하게 식별할 수 있음
    • 최소성 : 행을 식별하는 데 필요한 최소 열의 집합
      ▪︎ 기본 키는 중복될 수 없으며 NULL 값을 가질 수 없음
      CREATE TABLE User (
       	user_id INT PRIMARY KEY,
       	name VARCHAR(100)
      );

      자연키(Natural Key)와 인조 키(Surrogate Key)

    1. 자연 키(Natural Key)
    • 자연 키는 도메인 내에서 고유하게 정의된 속성을 사용하여 기본 키로 만듦
    • 특징
      • 데이터 자체에서 유래한 값으로 기본 키를 구성
      • 예시 : 주민등록번호, 이메일 주소, 여권 번호 등
    • 장점
      • 직관적으로 이해하기 쉽고, 추가적인 열을 만들 필요가 없음
    • 단점
      • 변경 가능성이 있어 데이터 무결성을 유지하기 어려울 수 있음
      • 값이 길거나 복잡할 수 있음
    1. 인조 키(Surrogate Key)
    • 인조 키는 테이블의 각 행을 고유하게 식별하기 위해 인위적으로 생성된 키
    • 특징
      • 주로 숫자형 자동 증가 값(AUTO_INCREMENT)이나 UUID를 사용
      • 데이터와 직접적인 관계가 없는 순수한 식별자
    • 장점
      • 불변성이 보장되어 데이터 무결성을 쉽게 유지할 수 있음
      • 값이 짧고 단순하여 인덱싱 및 조회가 빠름
    • 단점
      • 데이터와 무관한 값이므로 의미를 파악하기 어려움
  2. 외래 키 (Foreign Key)
  • 한 테이블의 열이 다른 테이블의 기본 키를 참조하는 키
    ▪︎ 외래 키는 두 테이블 간의 관계를 정의하고 데이터 무결성을 유지하는 데 사용
    CREATE TABLE Order (
     	order_id INT PRIMARY KEY,
     	customer_id INT,
     	order_date DATE,
     	FOREIGN KEY (customer_id) REFERENCES Customer(customer_id)
    );
  1. 후보 키 (Candidate Key)

    • 기본 키로 사용할 수 있는 후보 열 또는 열의 집합
    • 유일성 : 각 행을 고유하게 식별할 수 있음
    • 최소성 : 행을 식별하는 데 필요한 최소 열의 집합
      • 예시 : 사용자 테이블의 user_id와 email 열이 모두 후보 키일 수 있음
  2. 대체 키 (Alternate Key)

    • 후보 키 중 기본 키로 선택되지 않은 키
      • 기본 키 이외의 모든 후보 키가 대체 키가 됨
      • 예시 : 사용자 테이블에서 email 열이 기본 키로 사용되지 않는 경우, email 열은 대체 키가 될 수 있음
  3. 복합 키 (Composite Key)

    • 두 개 이상의 열을 조합하여 고유하게 식별할 수 있는 키
    • 유일성 : 각 행을 고유하게 식별할 수 있음
    • 최소성 : 행을 식별하는 데 필요한 최소 열의 집합
      ▪︎ 주로 교차 테이블에서 사용
      CREATE TABLE Enrollment (
       	student_id INT,
       	course_id INT,
       	PRIMARY KEY (student_id, course_id)
      );
profile
HW + SW = 1

0개의 댓글