데이터 모델

정형진·2023년 3월 2일
0

데이터 모델

  • 데이터베이스 시스템에서 데이터를 저장하는 이론적인 방법
  • 데이터베이스에 데이터가 어떻게 구조화되어 저장되는지 결정
  • 가장 많이 사용되는 모델
    • 관계 데이터 모델 (relational data model)

관계 데이터 모델

  • 1970년대 제안
  • 수학의 집합이론에 근거하여 탄탄한 이론적 토대
  • 관계 데이터 모델이 적용된 SQL 언어는 비절차적인 언어로 원하는 데이터를 쉽게 표현

절차, 비절차, 객체지향 정리

<절차지향 언어>
절차적 언어: 명령어가 "순차적으로 실행"하는 것에 중점.
Ex) C

장점 
- 프로그램 흐름 파악 쉽다. 
- 실행 속도가 빠르다. 

단점
- 유지보수 어려움.
- 코드 순서가 바뀌면 동일한 결과 보장의 어려움.
Ex) 초기 코드: A -> B -> C
    변경 코드: A -> B -> B' -> C 
	=> 동일 결과가 아닐 수 있다. 

<객체지향 언어>
객체지향 언어: 기능별 "모듈화", 중복 연산을 하지 않고 모듈을 재활용
객체간 관계와 기능에 중심을 둔 언어.
Ex) C++, JAVA, Python

Q. 객제지향 언어는 순서대로 실행되지 않나요? 
절차지향 언어는 "객체"라는 개념이 없음. 
인스턴스 변수, 클래스 변수 개념 자체가 존재하지 못하는 구조
객체지향 언어: 순서대로 실행된다. "객체"들이 순서대로 소통, 객체간의 관계에 초점을 두고 있다. 

장점
- 재사용성: 상속
- 자연스러운 모델링: 우리가 사는 세계와 유사, 개발자가 생각라는 대로 자연스러운 구현 용이

단점
- 느린 개발 속도, 실행 속도
- 이해하는 데 어려울 수도 있다. 

Q. 객체 지향 > 절차 지향 ?
그렇지 않다. 무조건 우수한 것은 아니다. 
특징이 다를 뿐, 어느 곳에 어떻게 활용할 것인가에 따라서 적절한 방식이 있는 것.

<비절차지향 언어> 
- 개발자가 처리절차를 정하지 않고, 원하는 결과를 정의하고 요청하는 언어.
Ex) SQL 

관계 데이터 모델 DMBS

  • Oracle
  • SQL Server
  • DB2
  • MySQL
  • PostgreSQL
  • SQLite

관계 데이터 모델 개념

  • 릴레이션
  • 릴레이션 스키마와 인스턴스
  • 릴레이션 특징
  • 관계 데이터 모델

릴레이션 (relation)

  • 행과 열로 구성된 테이블
  • ⚠ 관계라고 하지 않음

관계 (relationship)

  • 릴레이션 내에서 생성되는 관계
  • 릴레이션 간에 생성되는 관계
  • ex. “고객”과 “주문“ 릴레이션의 관계, “상품”과 “주문“ 릴레이션의 관계

릴레이션 스키마와 인스턴스

  • 투플, 행
  • 속성, 열
  • 스키마
  • 인스턴스

릴레이션 스키마

  • 릴레이션에 어떤 정보가 담길지 정의
  • 표기법: 릴레이션 이름 (속성A, 속성B, ...)
  • Ex) 고객(이름, 주소, 전화번호, 포인트, 등급)

릴레이션 인스턴스

  • 릴레이션에 스키마에 실제로 저장된 데이터

속성 (Attribute)

  • Entity의 특성이나 속성을 의미
  • 쉽게 말하면 데이터를 가져와서 알고 싶은 것!
  • ex. 마트에서 고객 개체에서 알고 싶은 데이터

릴레이션 특징 (중요)

  1. 속성은 단일 값을 가짐
  2. 속성은 서로 다른 이름을 가짐
  3. 한 속성의 값은 모두 같은 도메인 값을 가짐
  4. 속성의 순서는 상관 없음
  5. 릴레이션 내의 중복된 투플 허용 안됨
  6. 투플 순서 상관 없음

도메인: 릴레이션의 각 속성이 가질 수 있는 값의 집합


관계 데이터 모델

  • 관계 데이터 모델은 데이터를 2차원 테이블 형태인 릴레이션으
    로 표현
  • ex. 고객 정보는 고객 릴레이션, 주문 정보는 주문 릴레이션, 상품 정보는 상품 릴레이션

0개의 댓글