Computer Science/Database :: 데이터베이스

데이터베이스 3강 :: 릴레이션, 키, ERD 변환, 관계 연산

HJPlumtree 2022. 3. 3. 13:44

데이터베이스 3강을 보며 배운내용

 

 

정리(TL;DR)

관계형 모델은 표다
그 표를 릴레이션이라고 하고
그 릴레이션과 함께 사용되는 용어들은
컬럼, 레코드, 키, 스키마 등이 있다

그리고
이 표를 원하는 데이터를 가지고 있게 연산할 수 있다
릴레이션 1개에 사용하는 셀렉트, 프로젝트 등
릴레이션 2개이상에 사용하는 조인, 카티시언 프로덕트 등이 있다

다음 강의 4강은
데이터베이스를 듣기 시작한 이유인 SQL!
기본만 잘 알아놓자!

 

 

관계형 모델은 언제 사용하더라?

데이터베이스 2강에서 봤던 그림 호출

 

 

논리적 데이터 모델링이란?

  • DBMS 구현 모델에 맞춰 데이터 표현하는 과정
  • 데이터 정의 언어로 적은 개념 스키마 생성

 

왜 논리적 데이터 모델링이 필요한가?

  • 구현 모델에 맞춰 데이터 수정
  • ERD를 RDBMS가 수용가능한 구조로 변경

 

 

관계형 모델(Relational Model)

  • 릴레이션(Relation)으로 데이터 표현
  • 데이터 포현 단순하고 직관적 구조화 모델
  • 현재 다수의 DBMS의 기초
    - Oracle, DB2, PostreSQL, MYSQL 등

 

 

릴레이션은 뭘까?

단어가 어렵지~~ 그냥 표다

이렇게

 

Q. 표가 가지고 있는 열의 제목들은?

A. 스키마

 

Q. 스키마에 맞게 값을 채워넣은 것은?

A. 레코트(튜플)

그러고 보니 TypeScript에서 본 튜플이랑 비슷하게 생겼구만

 

Q. 각 열은 뭐라 그러지?

A. 컬럼(속성, 필드) 이름 많아

 

 

✅ 릴레이션의 특징

  • 유일성: 같은 레코드 존재 불가능
  • 레코드 & 컬럼 무순서성: 순서 의미 없다
  • 원자성: 모든 값은 하나의 의미만 갖는다

 

 

🗝️ 키(Key)

역할

레코드를 유일하게 식별할 수 있는 값

 

속성

유일성(Uniqueness)

최소성(Irreducibility)

 

종류

  • 수퍼키(Super key): 유일성만 만족하는 컬럼들의 집합
  • 후보키(Candidate key): 유일성 & 최소성 만족하는 컬럼들의 집합
  • 기본키(Primary key: PK): 후보키중에 하나. 레코드 구분하는데 사용되는 중요한 키!
  • 외래키(Foreign key: FK): 다른 릴레이션에 참조되는 기본키

 

 

관계형 모델의 제약조건

  • 영역 제약 조건: 칼럼에 정의된 영역(domain)을 벗어나는 값 설정 불가능
  • 키 제약: 키로 지정된 컬럼에는 다른 값이 들어갈 수 없다
  • 개체 무결성 제약: 어떤 기본키도 Null 될 수 없다
  • 참조 무결성 제약: 반드시 존재하는 레코드의 기본키만 참조 가능

 

 

ERD => 관계형 모델 변환

 

방법

 

🤖 예시(일 대 다)

 

 

관계 연산이란?

기존의 릴레이션 이용해서 새로운 릴레이션 생성

즉 기존의 데이터 표에서, 새로운 데이터 표를 추출하는 방법 wow!!

추출할 때 관계 대수를 사용한다

 

관계 대수(Relational Algebra)

  • 관계 연산 정의
  • 셀렉트, 조인 등
  • 새로운 릴레이션 생성
  • 연산 처리 표현

 

🧮 연산

 

  • 셀렉트
    릴레이션에서 조건을 만족하는 레코드로 새로운 릴레이션 생성
  • 프로젝트
    선택한 컬럼만 갖는 릴레이션 생성(좀더 필터를 적용시키는 느낌)
  • 조인
    두 릴레이션에서 조건을 만족하는 레코드를 결합한 레코드로 구성된 릴레이션 생성
  • 카티시언 프로덕트
    두 릴레이션에 포함된 레코드 간의 모든 조합을 생성하는 이항 연산자

 

셀렉트랑 프로젝트는 한 릴레이션에서 사용
조인과 카티시언 프로덕트는 2개이상 릴레이션에서 사용

 

집합 연산자

합집합, 교집합, 차집합

 

집합 연산자 조건

릴레이션 차수가 동일해야 한다

같은 도메인이 가지고 있어야 한다

 

 

Database by Jan Antonin #unsplash