1. Database?
논리적으로 서로 관계가 있는 data들의 조직화된 집합체를 의미한다. 체계가 저장되었다는 의미이고, 관련성 있는 data들이 같은 테이블에 있고 관계를 맺고 있는 집합체이다. 한 테이블의 PK와 FK로 관계를 맺는다. 계속 쌓아온 data로 부터 우리가 어떻게 행동하느냐, 어떤 방향으로 나아가느냐를 원하기 때문에 data가 들어갔을 때의 Information, Knowledge를 제공한다.
2. Database의 구성요소
- meta data
- Data of data
- Data를 묘사하는 data
- Data의 속성의 설명, 묘사
- Data의 타입, 사이즈, 변수의 값으로 올 수 있는 값
3. Data Modeling
Modeling
- 체계화해서 디자인한 것을 model이라고 하고, 어떤 식으로 저장할 것인가, 조직화 할 것인가를 modeling이라고 한다. Class diagram을 그리는 것도 modeling이다.
User Requirement 수집
- customers, products, order에 대한 기록을 저장할 database를 원함
Data Modeling의 3단계
- Conceptual Design(ER Modeling)
- 개념적으로 database를 만듦
- ER Diagram을 그림
- Entity와의 관계, Relationship에 대해 그림
- Logical Design(Relational Model)
- ER Diagram으로 그린 것을 실제 저장구조와 비슷하게 디자인
- 정규화 과정을 포함
- Physical Design
- 마지막 단계의 디자인
- Performance를 생각
- Database가 어떤 테이블, 어떤 컬럼으로 되어있는지
- 뭔가 성능을 생각하고, 각각의 컬럼이 어떤 타입인지
- 성능이 느릴 것 같으면 최적화하는 단계
- 가령 플랫폼 이용자가 10억명이라고 했을 때, 특정한 사람에 대한 정보를 얻고 싶으면 모든 레코드를 훑어야 가능해서 엄청 느릴 것이다. 이때 Indexing, Partition을 통해 성능 개선을 함
3. Database Layout
DBMS
- database를 만들고 관리하기 위한 도구
- database는 data를 저장하는 공간
- database는 주로 원통으로 표현하는데 하드디스크를 의미
- Repository는 meta data를 저장하는 공간
- User Interface Database에 접속할 수 있는 창 역할
Data를 File로 다룰 때 단점
-
프로그램에 종속
- 텍스트 파일에 저장되어 있으면 코딩할 때 복잡
- database를 사용하면 쿼리문을 사용하면 코딩할 때 활용하기 좋음
-
data 중복
- 공간의 낭비
- data의 수정이 있을 때 여러 파일에 반영이 안되기 때문에 data의 불일치가 발생
-
data 공유의 어려움
-
개발시간이 늘어남
- 읽어드리고 사용하는데 복잡함
- 무선을 넘나드는 시스템 상의 어떤 걸 만들 때 복잡해짐
- 가령, 회계부서와 주문부서에게 고객 data를 따로 관리할 때 길이, 컬럼 이름 등이 달라서 통합하기 어려움
- 두 회사가 합병하면 그 회사들이 사용하던 시스템도 합쳐야하는데 어려움
-
프로그램 관리의 어려움
Database의 장점
The Three Schema Architecture
단계나 등급에 따라서 3가지의 scheme을 가진 구조
-
External Schema
- 가장 바깥에 있으므로 사용자와 가까움
- database의 일부인 개념적인 구조
-
Conceptual Schema
-
Internal Schema
- database의 물리적 저장구조
- Logical Schema, Physical Schema의 결과물로 구성되어 있음