데이터 모델
- 데이터베이스 시스템에서 데이터를 저장하는 이론적인 방법
- 데이터베이스에 데이터가 어떻게 구조화되어 저장되는지 결정
- 가장 많이 사용되는 모델
• 관계 데이터 모델 (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. 마트에서 고객 개체에서 알고 싶은 데이터
릴레이션 특징 (중요)
- 속성은 단일 값을 가짐
- 속성은 서로 다른 이름을 가짐
- 한 속성의 값은 모두 같은 도메인 값을 가짐
- 속성의 순서는 상관 없음
- 릴레이션 내의 중복된 투플 허용 안됨
- 투플 순서 상관 없음
도메인: 릴레이션의 각 속성이 가질 수 있는 값의 집합
관계 데이터 모델
- 관계 데이터 모델은 데이터를 2차원 테이블 형태인 릴레이션으
로 표현
- ex. 고객 정보는 고객 릴레이션, 주문 정보는 주문 릴레이션, 상품 정보는 상품 릴레이션