🔹 조직정보
- 판매, 회계, 인적자원, 제조업
🔹 은행 업무 및 재무
- 은행 업무, 신용카드 트랜잭션, 재무
🔹 대학
- 등록, 성적, 학사 관리
🔹 항공
- 예약, 스케줄 편성
🔹 통신
- 통화 내역, 데이터 사용량, 문자
🔹 web-based 서비스
- 온라인 소매: 주문 내역 확인, 사용자 맞춤형 제품 추천
- 온라인 광고
🔹 문서 데이터베이스
데이터 vs 정보
- 데이터는 정보 구축의 기반이 됨.
- 데이터는 정보를 생산하기 위해 처리됨.
- 정보는 데이터의 의미를 밝혀냄.
- 정보는 지식의 기반이 됨.
- 좋은, 적시의, 관계있는 정보는 의사 결정에 중요한 역할을 함.
- 예시
- 데이터: 가수의 공연 티켓 판매량
- 정보: 지역과 행사장에 따른 판매 보고서 ➡️ 어떤 행사장이 수익 창출에 유리한지 정보를 얻을 수 있음.
<초기> 컴퓨터에 정보를 저장할 때, 운영 체제 상의 파일 시스템
에 저장함.
➡️ 사용자가 정보를 사용하기 위해서는 응용 프로그램들이 필요함.
1. 데이터 의존성 (Data Dependency)
2. 데이터의 중복과 비일관성 (Data Redundancy and Inconsistency)
데이터의 비일관성
동일한 데이터의 여러 사본이 서로 다른 값을 보유하고 있는 상태 (데이터가 수정될 때 발생)
3. 데이터 접근 시의 어려움 (Difficulty in accessing data)
새로운 데이터를 검색할 때마다 새로운 응용 프로그램을 만들어야 한다.
하나의 query = 하나의 프로그램
👍 SQL의 경우, 데이터를 변경할 때 소스코드를 변경하지 않아도 됨. 데이터와 독립적임.
데이터의 고립: 데이터가 여러 파일에 흩어져 있고 파일 형식이 다르기 때문에 검색 프로그램을 작성하기 어려움.
4. 무결성 문제 (Integrity problems)
5. 원자성 문제 (Atomicity of updates)
6. 동시 액세스 문제 (Concurrent access by multiple users)
7. 보안 문제 (Security problems)
DBSM, DB 관리자, 서버 등
시스템이 원활하게 사용되려면, 데이터 검색이 효율적으로 이루어져야 함. 이러한 목적을 이루기 위해 DB 내의 데이터를 효율적으로 표현하기 위한 여러가지 복잡한 데이터 구조가 제안됨.
복잡한 구조를 감추어 사용자의 이해와 편의를 돕기 위해 여러 단계의 추상화 과정을 거침.
🔹물리적 단계(Physical level)추상회의 최하위 단계
ㅤ- 데이터가 실제로 어떻게 저장되는지 기술함.
ㅤ- 하드웨어의 관점에서 데이터 구조를 기술함.
ㅤ- 사람이 아니라 운영체제가 관리하는 부분임.
🔹논리적 단계(Logical level) 그 다음 상위 단계
ㅤ- DB에 어떤 데이터가 저장되어 있는지와 데이터 사이에는 어떤 관계가 있는지 기술함.
ㅤ- 사람의 관점에서 데이터 구조를 기술함.
ㅤ- 논리적 단계에서 사용되는 도구로는 table, tree ,graph, class
등이 있음.
ㅤ- 데이터베이스 모델은 논리적 단계에서 사용된 도구를 기반으로 결정됨.
ㅤ- DB 프로그램은 논리적 단계를 사용함.
ㅤ- 데이터베이스 관리자(database administrator: DBA)가 이 단계에서 작업함.
ㅤ물리적 데이터 독립성: 논리적 단계의 사용자는 물리적 단계의 복잡한 구조에 대해 알 필요가 없다
🔹뷰 단계(View level) 추상화의 최 상위 단계
ㅤ- 사용자들이 시스템을 간단하게 사용할 수 있도록 데이터의 일부만 기술하고 모두 숨김.
ㅤ- 논리적 단계의 부분집합임.
ㅤ- 한 사용자/앱 당 하나의 뷰❔
ㅤ- 하나의 데이터베이스에 대해서 수많은 뷰가 존재할 수 있음.ㅤ
ㅤ- 보안 목적으로도 뷰를 사용해서 정보를 숨기기도 함.
🔹인스턴스(instance): 어느 특정한 순간에 DB에 저장되어 있는 정보의 모임 변수 선언(형 정의)
🔹스키마(schema): DB의 전체적인 설계 변수에 저장된 값
DBMS에는 추상화의 단계에 따라 여러 개의 스키마가 존재함.
🔹물리적 스키마(physical schema): 물리적 단계에서 DB 설계
🔹논리적 스키마(logical schema): 논리적 단계에서 DB 설계
🔹서브 스키마(subschema): 뷰 단계의 스키마 여러 개가 존재할 수 있으며 각각 서로 다른 뷰를 기술함.
- 응용 프로그램에 가장 큰 영향을 미치는 것은 논리적 스키마임.
☝️대부분의 응용 프로그램들이 논리적 스키마를 기반으로 작성되기 때문임.- 물리적 스키마는 논리적 스키마 아래에 감추어져 있으나 상위 프로그램에 영향을 주지 않고서도 쉽게 변경할 수 있음.
➡️ 물리적 데이터 독립성(physical data independence): 응용 프로그램이 물리적 스키마에 의존하지 않아서 물리적 스키마가 변경되어도 논리적 스키마(또는 응용 프로그램)을 고칠 필요가 없음.
🔹데이터 모델: 데이터, 데이터 사이의 관계, 데이터의 의미, 일관성 제약조건 등을 기술하기 위한 개념적 표현들의 집합으로, DB 구조의 기반이 됨.
🔹 데이터 모델의 4가지 분류
ㅤ1. 관계형 모델(Relational Model) - 테이블
데이터와 데이터 사이의 관계를 나타내기 위해 테이블을 사용함.
각 테이블은 여러 개의 열(column)과 행(row)으로 구성됨.
테이블은 릴레이션(Relation)이라고도 부름.
레코드 기반 모델의 한 예시임.
➡️ 각 테이블은 특정한 형(type)의 레코드를 포함하기 때문임.
가장 널리 쓰이고 있는 데이터 모델임.
장점
단점
A data island is a subset of entities that are connected to each other via relationships, but that are independent of other entities within the same data store.
+) NoSQL/Hadoop/MapReduce
🔹 오래된 모델
1. 계층형 데이터 모델(hierarchical data model)
🔹 계층형/네트워크형 모델
- 장점: 데이터 표현에 있어 관계형 모델보다 더 효율적이며 매우 복잡한 데이터도 표현할 수 있음.
- 단점: 효율적인 DB 언어는 아님.
⭐ 데이터베이스 모델은 논리적 단계에서 사용된 도구를 기반으로 결정됨.
❔Object Oriented-Based-Relational Model이 모두 같은 것인가?
🔹 객체 관계(지향) 데이터 모델 (Object Relational(Oriented) Data Models)
원자 값 (더 쪼갤 수 X)
주로 숫자와 문자 데이터
복잡한 데이터를 표현하기 위해 사용함.
객체 지향 개념및 추가된 데이터 형을 다루기 위한 개념을 포함하여 관계형 데이터 모델을 확장함.
튜플의 속성이 복잡한 타입을 가질 수 있게 함. ex) 중첩관계와 같은 비원자적인 값
존재하는 관계형 언어와 양립할 수 있음.
장점: 매우 복잡한 데이터도 표현할 수 있음.
단점: 효율적인 DB 언어는 아님.
💭 NoSQL/Hadoop/MapReduce란?
- DDL(Data Definition Language, 데이터 정의 언어): 데이터베이스 스키마를 기술
metadata: 데이터를 위한 데이터
읽기 권한, 삽입 권한, 갱신 권한, 삭제 권한
- DML(Data Manipulaiton Language, 데이터 조작 언어): 사용자가 적절한 데이터 모델로 구성된 데이터를 접근하거나 조작할 수 있도록 하는 언어
SQL은 사용자 입력을 받거나 출력을 보여주거나 통신하는 기능은 없음. ➡️ 이러한 기능들은 데이터 접근을 허용하는 SQL 쿼리를 포함하는 C, C++, Java 등과 같은 host language로 작성되어야 함. ➡️ 응용 프로그램이 이러한 DB와의 상호작용을 가능하게 하는 프로그램임.
DB 설계 초기 단계는 장래 이용자들이 필요로 하는 데이터를 충분히 규정하는 것임. 이를 수행하기 위해 DB 설계자는 전문가들 및 사용자들과 활발히 상호작용 해야 함.
➡️ 결과물: 사용자의 요구 명세서(specification of user requirements)
다음으로 설계자는 데이터 모델을 설계하고, 선택한 데이터 모델의 개념을 적용함으로써 사용자의 요구들을 DB의 개념적인 스키마로 바꿈. 개념적 설계 단계에서 개발된 스키마는 기업의 상세한 overview를 제공함. 설계자는 스키마를 재검토한 뒤 중복되는 사항들(redundant features)을 제거함.
관계형 모델에서의 개념적 설계 단계는 DB에서 우리가 어떤 속성을 포착하고 이를 어떻게 그룹화 할것인지 결정함.
데이터 검색, 추출, 삭제 등
- 개체 집합: 윗 부분에 개체 집합의 이름을 갑고 그 아래에 속성들의 목록을 갖는 사각형 박스로 표현됨.
- 관계 집합: 연관된 개체 집합들을 연결한 마름모로 표현함. 관계의 이름을 마름모 안에 작성함.