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)를 수학적으로 표현할 수 있음
  • 기본 연산집합 연산으로 나뉨

기본 연산

  1. 선택(σ, Selection)
    • 조건을 만족하는 튜플(행)만 선택
    • 예시: σ학과='컴퓨터공학'(학생) → 컴퓨터공학과 학생만 출력
  2. 투영(π, Projection)
    • 특정 속성(열)만 추출
    • 예시: π이름, 학과(학생) → 학생의 이름과 학과만 출력
  3. 교차곱(×, Cartesian Product)
    • 두 릴레이션의 모든 조합을 생성 (연산량이 큼)
    • 예시: 학생 × 강의 → 모든 학생과 모든 강의의 조합 생성
  4. 조인(⨝, Join)
    • 두 릴레이션을 특정 조건으로 결합
    • 예시: 학생 ⨝ 학번=학번 수강 → 학생과 수강 정보를 학번 기준으로 연결
  5. 디비전(÷, Division)
    • A 릴레이션에서 B 릴레이션의 모든 값을 포함하는 튜플만 추출
    • 예시: 수강(학번, 강의ID) ÷ 강의(강의ID) → 모든 강의를 수강한 학생 찾기

집합 연산 

  • 릴레이션 R과 S의 차수가 동일해야 사용가능
  • 모든 i에 대해 R의 i번째 컬럼의 도메인과 S의 i번째 컬럼 도메인이 반드시 동일해야함 
  1. 합집합(∪, Union) : 두 릴레이션의 모든 튜플을 합침(중복 제거)
  2. 교집합(∩, Intersection) : 두 릴레이션에서 공통된 튜플만 출력
  3. 차집합(-, Difference) : 첫 번째 릴레이션에서 두 번째 릴레이션의 튜플을 제거
  4. 카타시안 프로덕트(×, Cartesian Product) : 모든 튜플의 조합을 생성