ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2023 - 06 - 26 SQL 관계형 데이터베이스 일대일 관계, 일대다 관계, 다대다 관계
    Today I Learned/TIL 06 2023. 6. 26. 09:33

    관계형 데이터베이스에서 일대일 관계, 일대다 관계, 다대다 관계는 데이터간의 연결을 나타내는 방식을 의미한다. 이를 SQL 모델을 사용하여 설명하면 다음과 같다.

     

     

    1. 일대일 관계(One-to-One Relationship): 일대일 관계는 한 테이블의 레코드가 다른 테이블의 레코드와 하나씩만 연결되는 경우다. 예를 들어, "사용자"와 "프로필" 테이블이 있다고 가정할때, 각 사용자는 하나의 프로필을 가지며, 각 프로필은 오직 하나의 사용자와 연결된다.

     

    CREATE TABLE 사용자 (
        사용자_ID INT PRIMARY KEY,
        이름 VARCHAR(50),
        -- 기타 사용자 관련 필드
    );
    
    CREATE TABLE 프로필 (
        프로필_ID INT PRIMARY KEY,
        사용자_ID INT UNIQUE,
        -- 기타 프로필 관련 필드,
        FOREIGN KEY (사용자_ID) REFERENCES 사용자(사용자_ID)
    );

    위의 예시에서 "프로필" 테이블의 "사용자_ID"는 "사용자" 테이블의 "사용자_ID"를 참조하는 외래 키이다. 이를 통해 각 사용자는 하나의 프로필만 가질 수 있고, 프로필은 오직 하나의 사용자와 연결된다.

     

     

    2. 일대다 관계(One-to-Many Relationship): 일대다 관계는 한 테이블의 레코드가 다른 테이블의 레코드와 일대다로 연결되는 경우다. 예를 들어, "부서"와 "직원" 테이블이 있다고 가정해 볼때, 각 부서는 여러 명의 직원을 가질 수 있지만, 각 직원은 오직 하나의 부서에만 속할 수 있다.

     

    CREATE TABLE 부서 (
        부서_ID INT PRIMARY KEY,
        부서명 VARCHAR(50),
        -- 기타 부서 관련 필드
    );
    
    CREATE TABLE 직원 (
        직원_ID INT PRIMARY KEY,
        이름 VARCHAR(50),
        부서_ID INT,
        -- 기타 직원 관련 필드,
        FOREIGN KEY (부서_ID) REFERENCES 부서(부서_ID)
    );

     

    위의 예시에서 "직원" 테이블의 "부서_ID"는 "부서" 테이블의 "부서_ID"를 참조하는 외래 키이다. 이를 통해 각 부서는 여러 명의 직원을 가질 수 있고, 각 직원은 오직 하나의 부서에 속한다.

     

     

    3. 다대다 관계(Many-to-Many Relationship): 다대다 관계는 한 테이블의 레코드가 다른 테이블의 레코드와 다대다로 연결되는 경우다. 예를 들어, "학생"과 "과목" 테이블이 있다고 가정해볼때, 각 학생은 여러 과목을 수강할 수 있고, 각 과목은 여러 학생에게 개설될 수 있다.

     

    CREATE TABLE 학생 (
        학생_ID INT PRIMARY KEY,
        이름 VARCHAR(50),
        -- 기타 학생 관련 필드
    );
    
    CREATE TABLE 과목 (
        과목_ID INT PRIMARY KEY,
        과목명 VARCHAR(50),
        -- 기타 과목 관련 필드
    );
    
    CREATE TABLE 학생_과목 (
        학생_ID INT,
        과목_ID INT,
        PRIMARY KEY (학생_ID, 과목_ID),
        FOREIGN KEY (학생_ID) REFERENCES 학생(학생_ID),
        FOREIGN KEY (과목_ID) REFERENCES 과목(과목_ID)
    );

     

    위의 예시에서 "학생_과목" 테이블은 "학생" 테이블과 "과목" 테이블의 외래 키를 참조한다. 이를 통해 각 학생은 여러 과목을 수강할 수 있고, 각 과목은 여러 학생에게 개설될 수 있다. 학생_과목 테이블은 두 테이블 간의 관계를 나타내는 연결 테이블로 사용된다.

    댓글

Designed by Tistory.