2023 - 06 - 26 SQL 관계형 데이터베이스 일대일 관계, 일대다 관계, 다대다 관계

관계형 데이터베이스에서 일대일 관계, 일대다 관계, 다대다 관계는 데이터간의 연결을 나타내는 방식을 의미한다. 이를 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)
);
위의 예시에서 "학생_과목" 테이블은 "학생" 테이블과 "과목" 테이블의 외래 키를 참조한다. 이를 통해 각 학생은 여러 과목을 수강할 수 있고, 각 과목은 여러 학생에게 개설될 수 있다. 학생_과목 테이블은 두 테이블 간의 관계를 나타내는 연결 테이블로 사용된다.