CS/데이터베이스시스템
3강 관계형 모델
haong_
2025. 3. 16. 12:48
논리적 데이터 모델링 단계
- DBMS의 구현 모델에 맞춰 데이터의 구조를 표현하는 과정
- 데이터 정의 언어(DDL)로 기술된 개념 스키마 생성
관계형 모델(relational model)
- 관계(relation)로 데이터를 표현하는 모델
- 관계형 모델을 사용하는 DBMS를 RDBMS 라고 부름
릴레이션의 구성
구성 | 요소 | 설명 |
릴레이션 스키마 | 테이블의 구조(이름, 속성) | 학생(학번, 이름, 학과, 전화번호) |
릴레이션 인스턴스 | 실제 저장된 데이터 | (1001, 홍길동, 컴퓨터공학, 010-1234-5678) |
속성(Attribute) | 테이블의 열(컬럼) | 학번, 이름, 학과 |
튜플(Tuple) | 테이블의 행(레코드) | 1001, 홍길동, 컴퓨터공학 |
도메인(Domain) | 속성 값의 허용 범위 | 전화번호: 010-xxxx-xxxx |
키(Key) | 유일한 데이터 식별 | 학번(PK), 교수ID(FK) |
릴레이션의 특징
- 레코드 유일성: 레코드의 중복 존재 불가
- 레코드 무순서성: 레코드의 순서는 의미가 없음
- 컬럼의 무순서성: 컬럼은 순서가 없음
- 컬럼값의 원자성: 모든 값을 나눌 수 없는 단 하나의 의미로 이루어 져야함
키(key)
- 릴레이션의 레코드를 유일하게 식별하는 값
- 유일성: 키로 지정된 속성 조합이 각 튜플을 유일하게 식별할 수 있어야 함
- 최소성: 꼭 필요한 속성만 포함해야 하며, 불필요한 속성이 포함되면 안 됨
키의 종류
- 수퍼키 super key : 유일성 만족
- 후보기 candidate key: 유일성 & 최소성 만족
- 기본키 PK : 레코드의 구분을 위해 선택된 후보키
- 외래기 FK : 참조된 한 릴레이션의 기본키
관계형 모델의 제약조건
- 영역 제약 조건: 컬럼에 정의된 영역에 속한 값으로만 컬럼 값 결정
- 키 제약 조건: 키는 레코드를 고유하게 구별하는 값으로 구성
- 개체 무결성 제약조건: 어떤 기본키도 null 값 될수 없은
- 참조 무결성 제약조건: 반드시 존재하는 레코드의 기본키만 참조가능
널 Null 개념
- 없음 또는 0 이아닌 미지의 값에 대한 표현
- 입력된적 없거나 적용 불가능한 값
논리적 데이터 모델링의 수행
논리적 데이터 모델링 개념
- DBMS의 구현 모델에 맞춰 데이터를 표현하는 과정
- 데이터 정의 언어로 기술된 개념 스키마 생성
- 논리적 데이터 모델링의 역할
관계형 모델 변환 규칙
관계 유형 | 변환 방법 |
개체집합 | 테이블로 변환, 기본 키 설정 |
약한 개체집합 | 강한 개체의 PK + 부분 키로 복합 키 생성 |
일대일(1:1) 관계 | 한 개체에 FK 추가 또는 별도 테이블 생성 |
일대다(1:N) 관계 | "다"쪽 테이블이 "일"쪽의 PK를 FK로 포함 |
다대다(N:M) 관계 | 별도 연결 테이블 생성 후 두 개체의 PK를 복합 키로 설정 |
관계형 데이터 연산
관계 연산의 개념
- 관계형 모델을 기반으로 구성된 릴레이션을 사용해 새로운 릴레이션을 생성하는 연산자
- 사용자 관점에서 필요한 데이터를 다수의 릴레이션에서 추출하는 방법이 필요
관계대수
- 관계형 데이터베이스에서 원하는 데이터를 검색하기 위한 연산자들의 집합
- SQL의 기초가 되는 개념이며, 질의(Query)를 수학적으로 표현할 수 있음
- 기본 연산과 집합 연산으로 나뉨
기본 연산
- 선택(σ, Selection)
- 조건을 만족하는 튜플(행)만 선택
- 예시: σ학과='컴퓨터공학'(학생) → 컴퓨터공학과 학생만 출력
- 투영(π, Projection)
- 특정 속성(열)만 추출
- 예시: π이름, 학과(학생) → 학생의 이름과 학과만 출력
- 교차곱(×, Cartesian Product)
- 두 릴레이션의 모든 조합을 생성 (연산량이 큼)
- 예시: 학생 × 강의 → 모든 학생과 모든 강의의 조합 생성
- 조인(⨝, Join)
- 두 릴레이션을 특정 조건으로 결합
- 예시: 학생 ⨝ 학번=학번 수강 → 학생과 수강 정보를 학번 기준으로 연결
- 디비전(÷, Division)
- A 릴레이션에서 B 릴레이션의 모든 값을 포함하는 튜플만 추출
- 예시: 수강(학번, 강의ID) ÷ 강의(강의ID) → 모든 강의를 수강한 학생 찾기
집합 연산
- 릴레이션 R과 S의 차수가 동일해야 사용가능
- 모든 i에 대해 R의 i번째 컬럼의 도메인과 S의 i번째 컬럼 도메인이 반드시 동일해야함
- 합집합(∪, Union) : 두 릴레이션의 모든 튜플을 합침(중복 제거)
- 교집합(∩, Intersection) : 두 릴레이션에서 공통된 튜플만 출력
- 차집합(-, Difference) : 첫 번째 릴레이션에서 두 번째 릴레이션의 튜플을 제거
- 카타시안 프로덕트(×, Cartesian Product) : 모든 튜플의 조합을 생성