DataBase

[DataBase] 02. Introduction to Relational Model

lumana 2024. 6. 15. 18:39

관계형 모델 (Relational Model)

  • 관계형 모델은 데이터베이스 관리에서 데이터 구조와 언어를 사용하여 데이터를 관리하는 접근 방식입니다.
    • 모든 데이터는 튜플(tuple) 형태로 표현되며, relation으로 그룹화됩니다.
    • 관계형 모델로 구성된 데이터베이스를 관계형 데이터베이스(relational database)라고 합니다.
  • 관계형 모델의 목적은 데이터를 명시하고 쿼리를 지정하는 선언적 방법을 제공하는 것입니다.
    • 사용자는 데이터베이스가 포함하는 정보와 원하는 정보를 직접 명시하며, 데이터베이스 관리 시스템 소프트웨어가 데이터를 저장하고 쿼리에 응답하기 위한 데이터 구조를 설명하는 과정을 담당합니다.
  • modern DB(mySQL, ...)에서 사용되고 있다.

관계형 데이터 모델 (Relational Data Model)

  • 관계형 데이터 모델은 데이터 저장 및 처리에 널리 사용되는 기본 데이터 모델입니다.
  •  테이블 (Tables): 관계형 데이터 모델에서 relation(관계)는 테이블 형식으로 저장됩니다. 
    • 테이블은 행과 열로 구성되며, 행(rows)은 record를 나타내고 열(columns)은 attribute을 나타냅니다.
  • 튜플 (Tuple): 테이블의 단일 행으로, 해당 relation의 단일 record를 포함하는 것을 튜플이라고 합니다

  • Column(열)
    • Column(열)은 특정 유형의 데이터 값을 모아 놓은 집합으로, 데이터베이스의 각 row(행)에 대한 값을 가집니다.
    • Column(열)은 속성(attribute)이라고도 불립니다.
  • Primary Key
    • Primary Key는 각 레코드에 대해 고유한 관계형 모델의 key입니다.
  • Domain
    • 도메인은 column이 포함할 수 있는 허용 가능한 값의 집합입니다.
    • 이는 column의 데이터 타입과 다양한 property에 기반합니다.

관계형 모델의 연산 (Operations in Relational Model)

  • Insert Operation
    • 새로운 튜플에 대한 속성 값을 제공하여 relation에 삽입됩니다.

  • Update Operation
    • 기존 튜플의 속성 값을 수정합니다.

  • Delete Operation
    • 조건에 따라 튜플을 선택하여 삭제합니다.

  • Select Operation
    • 조건에 따라 튜플을 선택합니다.

관계형 모델의 예시 (Example of Relational Model)

  • Ex) Instructor Relation

Relations are Unordered : Relation은 순서가 없다.

  • 튜플의 순서는 중요하지 않습니다. 튜플은 임의의 순서로 저장될 수 있습니다.
  • ex) 순서가 없는 튜플로 나타낸 Instructor relation

데이터베이스 스키마 (Database Schema)

  • 데이터베이스 스키마 (Database Schema)
    • 데이터베이스의 논리적 구조를 의미합니다.
  • 데이터베이스 인스턴스 (Database Instance)
    • 특정 시점에 데이터베이스에 있는 데이터의 스냅샷입니다.
    • 인스턴스는 계속해서 변하지만, Schema는 그대로이다.
  • 예시 (Example)
    • 스키마: 강사 (ID, 이름, 부서명, 급여)
    • 인스턴스

키 (Keys)

  • Primary Keys(PK)
    • PK는 각 레코드에 대해 고유한 관계형 데이터베이스의 키입니다. 이는 운전 면허 번호, 전화 번호(지역 코드 포함), 차량 식별 번호(VIN) 등과 같은 고유 식별자입니다.
    • 관계형 데이터베이스는 하나의 PK만 가질 수 있습니다.
      • 보통 PK는 관계형 DB Table에서 columns에 나타납니다

Schema Diagram for University Database

관계 대수 (Relational Algebra)

  • 프로시저 언어(procedural language)로서, 하나 또는 두 개의 relation을 입력으로 받아 새로운 relation을 결과로 생성하는 일련의 연산으로 구성
  • 여섯 가지 기본 연산자
    • select: σ
    • project: π
    • 합집합 (union): ∪
    • 차집합 (set difference): −
    • 카테시안 곱 (Cartesian product): ×

Select Operation

  • Select는 주어진 조건을 만족하는 튜플을 선택
  • 표기법: σ_p(r)
  • p는 선택 조건 (selection predicate)라고 부름
  • 예: "물리학 (Physics)" 학과의 교수인 튜플을 선택
    • 쿼리: σ_dept_name="Physics" (instructor)
    • 결과:

  • SELECT 연산은 주어진 선택 조건에 따라 튜플의 부분 집합을 선택
  • 시그마 (σ) 기호로 표시
  • 선택 조건을 충족하는 튜플을 선택하는 표현식으로 사용
  • 선택 연산은 주어진 조건을 만족하는 튜플을 선택
  • 표기법: σ_p(r)
    • σ는 조건 (predicate)
    • r은 관계 (relation) 이름
    • p는 명제 논리 (prepositional logic)
  • 조건 비교는 =, ≠, >, ≥, <, ≤ 사용 가능
  • 여러 조건을 AND (∧), OR (∨), NOT (¬) 연결자로 결합 가능
  • 예: 물리학 학과의 교수 중 급여가 90,000 이상인 교수 찾기
    • 쿼리: σ_dept_name="Physics" ∧ salary > 90000 (instructor)
    • 예: 건물 이름과 동일한 학과 이름을 가진 학과 찾기
      • 쿼리: σ_dept_name=building (department)

Project Operation(투영 연산)

  • 특정 속성(attributes)을 생략한 relation을 반환하는 단항 연산(unary operation, argument가 1개인 연산을 말함)

  • 표기법: π_A1, A2, ..., Ak (r)
    • A1, A2는 속성 이름, r은 관계 이름
  • 결과는 나열된 attribute의 relation으로 정의되며 나열되지 않은 속성은 삭제
  • 중복 행은 제거됨, relation은 집합(set)이기 때문
  • 예: 교수의 dept_name 속성 제거
    • 쿼리: 

  • 결과

관계 연산의 조합 (Composition of Relational Operations)

  • 관계 대수 연산의 결과는 relation이며, 따라서 관계 대수 연산은 관계 대수 표현으로 조합 가능
  • 예: 물리학 학과의 교수 이름 찾기
    • 쿼리: π_name (σ_dept_name = "Physics" (instructor))

  • Project operation(π)의 인수로 관계 이름 대신 표현식(σ_dept_name = "Physics" (instructor)을 사용

카테시안 곱 연산 (Cartesian-Product Operation)

  • 카테시안 곱 연산 (×)은 두 relation(관계)의 모든 가능한 튜플 쌍을 결합
  • 예: instructor와 teaches 관계의 카테시안 곱
    • 표기법: instructor × teaches
  • 우리는 가능한 각 튜플 쌍에서 결과의 튜플을 구성합니다. 하나는 instructor relation에서, 다른 하나는 teaches relation에서
  • instructor ID는 두 relation 모두에 나타나기 때문에, relation의 이름에 attribute을 첨부하여 이러한 attribute을 구별합니다.
  • 예:
    • instructor.ID
    • teaches.ID

instructor × teaches 테이블

 

Join Operation

  • 카테시안 곱 instructor × teaches는 모든 가능한 튜플 쌍을 생성
    • 대부분의 결과 행은 특정 과목을 가르치지 않는 교수 정보 포함

  • "instructor × teaches" 중 교수와 그들이 가르치는 과목에 해당하는 튜플만 얻기 위해 위와 같이 사용한다.
    • 우리는 교수와 그들이 가르치는 과목에 해당하는 튜플만 얻을 수 있음
  • 테이블 대응:

  • Join 연산은 Select 연산과 카테시안 곱 연산을 단일 연산으로 결합 가능
  • r(R)과 s(S) relation를 고려
  • "theta"를 스키마 R과 S의 속성에 대한 조건으로 설정

  • 따라서:
    • σ_instructor.id = teaches.id (instructor × teaches)
    • 동일하게 다음으로 표현 가능:

Union Operation(합집합 연산)

  • Union Operation은 두 relation을 결합
  • 표기법: r ∪ s
  • r ∪ s가 유효하려면:
    1. r과 s는 동일한 수의 attribute을 가져야 함
    2. attribute 도메인이 호환되어야 함(must be compatible) (예: r의 두 번째 열은 s의 두 번째 열과 동일한 유형의 값을 처리)
  • 예: 2017년 가을 학기 또는 2018년 봄 학기 또는 두 학기 모두에 가르친 모든 과목 찾기

Set-Intersection Operation(교집합 연산)

  • Set-Intersection 연산은 두 input relation 모두에 존재하는 튜플을 찾음
  • 표기법: r ∩ s
  • 가정:
    • r과 s는 동일한 수의 도메인을 가짐
    • r과 s의 attribute는 호환됨
  • 예: 2017년 가을 학기와 2018년 봄 학기 모두에 가르친 모든 과목 찾기

  • 결과:

 Set Difference Operation(차집합 연산)

  • Set Difference Operation은 한 relation에 있지만 다른 relation에 없는 튜플을 찾음
  • 표기법: r - s
    • r - s 와 s - r의 결과는 같지 않음에 주의하자.
  • Set Difference는 호환되는 relation 간에 수행되어야 함
    • r과 s는 동일한 arity를 가져야 함
    • r과 s의 attribute 도메인은 호환되어야 함
  • 예: 2017년 가을 학기에는 가르쳤지만 2018년 봄 학기에는 가르치지 않은 모든 과목 찾기

  • 결과:

'DataBase' 카테고리의 다른 글

[DataBase] 05. E-R Model  (0) 2024.06.25
[DataBase] 04. Intermediate SQL  (0) 2024.06.15
[DataBase] 03. Introduction to SQL(2)  (0) 2024.06.15
[DataBase] 03. Introduction to SQL(1)  (0) 2024.06.15
[DataBase] 01. Introduction  (0) 2024.06.15