일 대 다 ( One To Many )
일 대 다란 하나의 엔티티가 다른 엔티티 그룹과 여러 관계를 가질 수 있다는 의미이다
일 대 다 관계는 외래 키(foreign key)를 사용하여 DB 테이블 간에 설정된다
외래 키는 '다' 테이블에서 '일' 테이블의 기본 키(primary key)를 참조한다.
이를 통해 데이터의 무결성을 유지하고 관련 데이터 간 연결을 관리한다
예를 들어, 고객과 주문은 일 대 다 관계이다
1) 고객 roofTopCaat은 여러 주문을 넣을 수 있다
2) 한 주문에는 두 고객이 연관될 수는 없다
실제 세계에서는 더 많은 정보가 있겠지만
약식으로 두 테이블의 관계를 살펴보자
이 관계를 통해 고객 ID와 주문 ID로 묶이며
기본 키를 통해 고유한 번호의 고객이 어떤 번호의 주문을 했는지 확인할 수 있게 되며
KIM이라는 고객이 어떤 날짜에 몇 개를 주문했는지에 대한 간단한 구조화가 완성된다
PRIMARY KEY ( 기본 키 )
기본 키는 테이블 항목의 고유성을 보장해 DB간 결합이 이루어질 때
항목 간의 중복을 방지한다
예로, 고객이 동일한 물품을 한 개 구매한 후 어떤 이유에 의해서
추가로 한개를 더 구매한다거나 하는 경우에 대한 대처가 가능하다
FOREIGN KEY ( 외래 키 )
외래 키는 한 테이블 안에 있는 다른 테이블을 참조하는 키이다
위의 경우에선 유효하지 않은 고객이 주문을 넣을 경우에
이를 강제적으로 방지하는 것을 가능케 하기 위해서 사용되곤 한다
CREATE TABLE customers (
id INT PRIMARY KEY AUTO_INCREMENT,
FIRST_NAME VARCHAR(50),
LAST_NAME VARCHAR(50),
EMAIL VARCHAR(50)
);
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
ORDER_DATE DATE,
AMOUNT DECIMAL(8,2),
CUSTOMER_ID INT,
FOREIGN KEY (CUSTOMER_ID) REFERENCES customers(id)
);
INSERT INTO customers (FIRST_NAME, LAST_NAME, EMAIL)
VALUES ('KIM', 'MINSU', 'minsu@gmail.com'),
('PARK', 'SEYUN', 'seyun@gmail.com'),
('DAVID', 'HAWARD', 'haward@gmail.com');
INSERT INTO orders (ORDER_DATE, AMOUNT, CUSTOMER_ID)
VALUES ('2016-02-10', 99, 1),
('2016-01-23', 35, 1),
('2016-01-28', 72, 2),
('2016-03-01', 55, 3);
이를 통해 새로운 order가 insert될 경우 customer id가 매치되지 않으면 주문이 입력되지 않을 것이다
데이터 관계 탐구 (일대다 & Join) - (2)에선 크로스, 이너, 레프트, 라이트조인을 알아보자
'DBMS > MySQL' 카테고리의 다른 글
230922 금) 데이터베이스 개체 (0) | 2023.09.22 |
---|---|
230919 화) '데이터베이스 구성도' 완성하기 (0) | 2023.09.19 |
230918 2) 데이터베이스 모델링 (0) | 2023.09.18 |
230918 1) DB 알아보기 (0) | 2023.09.18 |