반응형

PK와 FK
| 1. Primary Key(PK, 기본키): 테이블에서 각 행을 구별할 수 있는 유일한 신분증 번호. 중복될 수 없고, 비어있어도 안된다 2. Foreign key(FK, 외래키): 다른 테이블의 PK를 빌려와서 두 테이블을 연결하는 고리이다 |
PK(PRIMARY KEY) 설정 원리
| 데이터베이스 상자(테이블)에 들어오는 모든 줄(데이터)는 서로 중복되지 않는 고유한 번호를 가져야 한다. 그래야 컴퓨터가 특정 데이터를 오차 없이 찾아낼 수 있기 때문이다 1. 영수증 테이블의 PK: 한 상점에서 발행한 수많은 영수증 중 특정 영수증을 딱 하나만 골라내기 위해 사용한다. 날짜나 금액은 중복될 수 있지만, 영수증 번호는 절대 중복되지 않도록 설계한다 2. 영수증_품목 테이블의 PK: 한 영수증 안에 적힌 여러 품목 중 첫 번째 줄, 두 번째 줄을 구분하기 위한 순번이다. 영수증 번호가 같더라도 이 순번이 다르면 서로 다른 줄로 인식된다 영수증 PK: 수많은 종이 영수증들 사이에서 겹치지 않게 사용함 항목번호 PK: 한 장의 영수증 안에 적힌 여러 줄의 물건들 사이에서 겹치지 않기 위해 사용함 * 공급 받는 사람 기준: 영수증번호는 PK가 될 수 X * 공급자 기준: 영수증 번호는 PK가 될 수 O |
FK(FOREIGN KEY) 설정 원리
| 외래키는 두 테이블 간의 **데이터 무결성(Data Integrity)**을 유지하기 위한 기술적 제약 조건이다 1. 참조 규칙: 자식 테이블의 특정 컬럼이 부모 테이블의 PK(기본키) 컬럼 값을 반드시 참조하도록 강제한다 2. 물리적 일치: 부모의 PK와 자식의 FK는 데이터 타입(예: INT, VARCHAR)과 길이가 완벽히 일치해야 물리적 연결이 가능하다 3. 존재 증명: 자식 테이블에 데이터를 입력할 때, 입력하려는 FK 값이 부모 테이블의 PK 리스트에 있는지 실시간으로 검증한다. 없는 값은 입력 자체가 차단된다 |
테이블 분리와 부모-자식 관계 (1:N)
![]() 1(부모)의 역할: 고유한 식별값(PK)을 가지며, 여러 번 반복될 수 없는 '기준 데이터'를 보유한다 (절대 중복되지 X) ![]() N(자식)의 역할: 부모의 PK를 FK로 가져와 저장한다. 동일한 부모 PK를 가진 행이 여러 개 존재할 수 있으므로 '상세 데이터'를 담당한다 분리 이유: 하나의 영수증에 품목이 늘어날 때마다 업체명, 날짜 등의 공통 정보가 중복 저장되는 것을 막기 위해, 공통 정보는 '부모'에 한 번만 쓰고 상세 내역은 '자식'에 행 단위로 추가한다 |
까마귀 발(Crow's Foot) 기호의 해석
선 끝에 붙은 기호는 데이터의 최솟값과 최댓값을 나타내는 수량 규칙이다![]() ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ![]() |
'Infra & Security Eng > Database Engineering' 카테고리의 다른 글
| 인사기록카드 비정규화 - 정규화 과정 실습 (1단계까지 완료) (0) | 2026.03.25 |
|---|---|
| 정규화의 근본 목적, 영수증 단계별 정규화 과정, PK와 FK의 기계적 원리, 까치발, 세로선, 동그라미 기호 의미 (0) | 2026.03.24 |
| PHP-Oracle 연동을 통한 데이터 관리 시스템 구축 및 입출력 프로세스 분석 (0) | 2026.03.23 |
| 데이터 모델링 정의, 구성요소 4가지, 정규화 정의, 함수적 종속, 단계별 과정 (0) | 2026.03.23 |
| PHP와 Oracle DB 연동의 모든 것: 웹 서버부터 DB 엔진까지의 메커니즘 총 정리 - 수정 중 (0) | 2026.03.20 |



