-
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) );
위의 예시에서 "학생_과목" 테이블은 "학생" 테이블과 "과목" 테이블의 외래 키를 참조한다. 이를 통해 각 학생은 여러 과목을 수강할 수 있고, 각 과목은 여러 학생에게 개설될 수 있다. 학생_과목 테이블은 두 테이블 간의 관계를 나타내는 연결 테이블로 사용된다.
'Today I Learned > TIL 06' 카테고리의 다른 글
2023 - 06 - 28 REST API (0) 2023.06.29 2023 - 06 - 27 이벤트 루프, 실행 컨텍스트, 호이스팅, 스코프체이닝, 프로세스, 싱글스레드, 논블로킹, 비동기, 동기 작업 (0) 2023.06.27 2023 - 06 - 25 Json Web Token, Map함수 (0) 2023.06.25 2023 - 06 - 24 시퀄라이즈 (Sequelize), ORM, RDBMS (0) 2023.06.24 2023 - 06 - 23 SQL 제약조건 - 쿼리문 기본 키 (Primary Key), 외래 키 (Foreign Key), Null, Unique 고유제약조건 (1) 2023.06.23