[데이터베이스의 특징]
* 실시간 접근성 : 데이터베이스는 실시간으로 서비스된다. 사용자가 데이터를 요청하면 수 초 내에 결과를 서비스한다
* 계속적인 변화 : 데이터베이스에 저장된 내용은 한 순간의 상태이지만, 데이터 값은 시간에 따라 항상 바뀐다.
*동시공유 : 데이터베이스는 서로 다른 업무, 여러 사용자에게 동시에 공유된다. (병행 = parallel)
* 내용에 따른 참조 : 데이터베이스에 저장된 데이터는 물리적인 위치가 아니라 값에 따라 참조된다.
[데이터베이스 시스템의 구성]
* DBMS : 사용자와 데이터베이스를 연결시켜주는 소프트웨어
* 데이터베이스 : 데이터를 모아둔 토대
* 데이터 모델 : 데이터가 저장되는 기법에 관한 내용
일반적으로 데이터들은 데이터베이스에 저자오디어 있습니다. 그런데 그러한 데이터를 어떻게 저장할 것인가를 의미하는 것이 데이터 모델이고, 개발자가 데이터베이스로부터 데이터를 꺼내오기 위해서 데이터베이스와 연결을 시켜주는 소프트웨어가 DBMS(DataBaseManagementSystem)이다.
[파일 시스템과 비교한 DBMS의 장점]
[DBMS의 기능]
* 데이터 정의(Definition) : 데이터의 구조를 정의하고 데이터 구조에 대한 삭제 및 변경 기능을 수행함
* 데이터 조작(Manipulation) : 데이터를 조작하는 프로그램이 요청하는 데이터의 삽입, 수정, 삭제 작업을 지원함
* 데이터 추출(Retrieval) : 사용자가 조회하는 데이터 혹은 응용 프로그램의 데이터를 추출함
* 데이터 제어(Control) : 데이터베이스 사용자를 생성하고 모니터링하며 접근을 제어함, 백업과 회복, 동시제어성 등을 지원
데이터 정의 와 데이터 조작의 차이
* 데이터 정의는 데이터 구조(Table)에 대해서 작업을 하는 것이고 데이터 조작은 Table에 들어있는 혹은 Table에 넣을 데이터에 대해서 작업을 하는 것.
[데이터 모델(Data Model)]
* 계층 데이터 모델(hierarchial data model)
* 네트워크 데이터 모델(network data model)
* 관계 데이터 모델(relation data model)
* 객체 데이터 모델(object data model)
* 객체-관계 데이터 모델(object-relational data model)
실제로 가장 많이 사용되는 모델은 관계 데이터 모델이다.
관계데이터모델은 서로 연관된 데이터들을 테이블로 모아두는 구조인데, 오늘날 객체지향 프로그래밍언어와는 모델이 맞지 않아서 ORM(Object Relational Mapping)을 사용하는 경우가 많다.
[ 3단계 데이터베이스 구조]
* 외부스키마(External Schema)
* 개념스키마(Conceptual Schema)
* 내부스키마(Internal Schema)
[외부 스키마]
* 일반 사용자나 응용 프로그래머가 접근하는 계층으로 전체 데이터베이스 중 하나의 논리적인 부분을 의미
* 여러 개의 외부 스키마가 있을 수 있음
* 서브 스키마(Sub Schema)라고도 하며, View의 개념임
외부스키마는 개념스키마의 부분집합.
[개념 스키마]
* 전체 데이터베이스의 정의를 의미
* 통합 조직별로 하나만 존재하며 DBA가 관리함
* 하나의 데이터베이스에는 하나의 개념 스키마가 존재
개념스키마란 개발하는데 필요한 모든 데이터베이스를 정의해 놓은 것.
[내부 스키마]
* 물리적 저장장치에 데이터베이스가 실제로 저장되는 방법의 표현
* 내부 스키마 역시 하나만 존재
* 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함됨.
내부스키마란 실제 구현에 관한 이야기로, 이 속성이 어떠한 형태(Integer or Varchar or 등등)이며 어느 정도의 크기를 갖는지 등에 관해서 기술해둔 스키마를 의미한다.
[매핑(Mapping)]
* 외부/개념 매핑
* 개념/내부 매핑
외부/개념 매핑은 사용자의 외부스키마와 개념 스키마 간의 매핑(사상)을 의미하며 외부스키마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응시키는 것.
개념/내부 매핑은 개념 스키마의 데이터가 내부스키마의 물리적 장치 어디에 어떤 방법으로 저장되는지를 대응 시키는 것.
'Engineering WIKI > Database' 카테고리의 다른 글
[Oracle]오라클 NVL 사용법 (0) | 2020.03.09 |
---|---|
[MySQL] 날짜 조회 (0) | 2020.03.09 |
[MySql] Curdate() 와 Now()의 차이점 (0) | 2019.11.27 |
[MySql] 패스워드 해시 업데이트 (0) | 2019.11.26 |
[MySql] JOIN (0) | 2019.07.04 |
[MySql] 유저 등록 (0) | 2019.05.30 |
[MySql] CAST 를 이용하여 만 나이 계산하기 (0) | 2019.02.14 |
[Mysql] Having 조건 (0) | 2019.01.19 |