59doit
[ SQL ] 데이터베이스 #1 본문
데이터베이스
- 조직의 여러 응용 시스템들이 공동으로 사용하기 위해 통합하고 저장한 데이터들로써 중복을 최소화하여 컴퓨터 기억 장치에 모아 놓은 집합체
- 데이터베이스는 유용한 데이터의 집합으로 다양한 데이터들을 관리하기 위해서 데이터를 저장하고 사용자가 원하는 정보를 쉽게 찾을 수 있어야 한다.
- 데이터베이스는 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것
- 데이터베이스가 유용한 데이터가 되기 위해서는 원하는 정보를 쉽게 얻거나 수정 삭제가 가능해야 한다.
< 데이터베이스의 구성 >
- 개별 객체인 개체(entity)를 가지고 있다.
- 도메인 : 하나의 속성이 취할 수 있는 모든 값
- 개체 인스턴스 : 하나이ㅡ 개체에 개체 값을 갖는 실제 레코드
- 객체 집합 : 개체 인스턴스의 집합 - 개체 간에 여러 가지 상호 관계를 의미한 것으로 속성 관계, 객체 관계 등이 있으며 데이터베이스의 가장 단위인 속성(attribute)으로 관계들을 설명하고, 데이터에 대한 중복 최소화, 공유화, 독립성, 보안, 무결성을 목적으로 한다.
< 데이터베이스 시스템의 형태 >
1. 파일 시스템
- 파일 시스템은 데이터를 파일 단위로 파일 서버에 저장한다.
- 개별 컴퓨터는 LAN(Local Area Network)을 통하여 파일 서버에 연결되어 있고 파일 서버에 저장된 데이터를 사용하기 위해 개별 컴퓨터의 응용 프로그램에서 요청한다.
- 응용 프로그램이 독립적으로 파일을 다루기 때문에 데이터가 중복으로 저장될 가능성이 있고 동시에 파일을 다루기 때문에 데이터의 일관성이 훼손될 수 있다.
- 소기업에서는 파일 시스템 사용하여 업무를 처리한다
2. 데이터베이스 관리시스템
- 데이터베이스 관리시스템은 DBMS(DataBase Management System)라고 한다.
- DBMS 서버를 도입하여 데이터를 통합 관리하는 시스템이다.
- DBMS 서버는 파일을 관리하고 데이터의 일관성 유지, 복구, 동시 접근 제어 등의 기능을 수행한다.
- DBMS 서버는 데이터를 저장하기 전 설계 과정을 거치기 때문에 데이터의 중복을 줄이고 데이터를 표준화하여 무결성을 유지한다.
- 중소기업에서는 데이터베이스 관리시스템 사용하여 업무를 처리한다
3. 웹 데이터베이스 관리시스템
- 웹 데이터베이스 관리시스템은 웹 브라우저를 사용하여 데이터베이스를 관리하는 시스템이다.
- 불특정 다수 고객을 상대로 하는 온라인 상거래나 공공 민원 서비스 등에 사용된다.
- 대기업에서는 인터넷을 사용하여 실시간 서비스로 업무를 처리한다.
4. 분산 데이터베이스 관리시스템
- 분산 데이터베이스 관리시스템은 여러 곳에 분산된 DBMS 서버를 연결하여 운영하는 시스템이다.
- 분산 데이터베이스 관리시스템은 대규모의 응용 시스템에서 사용된다.
- 대기업에서 인터넷을 사용하여 고객 서비스와 업무를 처리한다.
< 관계형 데이터베이스 관리시스템 (Relational DataBase Management System, RDBMS) >
- 소프트웨어는 많은 양의 데이터베이스를 편리하게 효율적으로 관리한다.
- 다양한 DBMS 중에서 가장 잘 알려진 소프트웨어로 일반적으로 RDBMS 를 줄여서 DBMS 라고도 한다.
- 자바와 같은 프로그램 언어로 만든 응용 프로그램과 데이터베이스의 중재자로서 모든 응용 프로그램들이 데이터베이스를 공유해서 사용할 수 있도록 관리해 주는 소프트웨어다.
- 데이터 중복을 최소화하고 데이터를 공유하므로 몇 개의 레코드를 동시에 수정하는 경우라도 오류의 발생률이 매우 낮다.
- 데이터의 무결성과 일관성을 가지고 있으며 데이터의 보안 보장성과 데이터의 표준화를 보장한다.
- 변화에 대한 준비성을 기반으로 한 데이터의 독립성을 보장한다.
- 데이터 처리의 복잡성으로 인해 복잡한 자료처리 방법이 요구되며 회복의 복잡성과 시스템의 취약성을 가지고 있다.
- 정형화된 데이터 항목들의 집합체로서 확장이 쉽다는 장점이 있는데 데이터베이스를 만든 후 관련되는 응용 프로그램들을 변경하지 않고도 새로운 데이터 항목을 데이터베이스에 추가할 수 있다.
- 2 차원 테이블 구조로 데이터를 관리하며 정보를 저장한다.
- 2 차원 테이블의 열을 컬럼(column)이라고 하고 행을 레코드(record)라고 한다.
- RDBMS 의 대표적인 소프트웨어 : ① Oracle ② MySQL ➂ MS-SQL
▷ 기능
- 데이터 정의(Definition):
데이터의 구조를 정의하고 데이터 구조에 대한 삭제와 변경 기능을 수행한다.
다양한 응용 프로그램과 DB 가 서로 상호 접속하는 방법을 제공한다. - 데이터 조작(Manipulation)
데이터를 조작하는 소프트웨어가 요청하는 데이터의 삽입, 수정, 삭제 작업을 지원한다.
사용자와 데이터베이스 간에 상호작용의 수단을 제공한다. - 데이터 추출(Retrieval)
데이터를 조작하는 소프트웨어가 요청하는 데이터나 사용자가 조회하는 데이터를 추출한다. - 데이터 제어(Control)
데이터베이스 사용자를 생성하고 접근을 제어하여 백업과 회복, 동시성 제어 등의 기능을 지원한다.
데이터의 정확성과 안전성을 유지한다
< 데이터베이스 시스템의 형태 >
1. 스키마 : 데이터베이스를 구성하는 파일, 레코드, 항목 등의 상호 관계 전체를 말한다.
- 외부 스키마
외부 스키마(external schema)는 외부 단계로 사용자가 직접 접근할 수 있는 바깥쪽의 스키마이다.
사용자의 관점에 따라 여러 개의 부분집합으로 나누어지는 것을 말하며 뷰의 개념이다.
사용자가 접근하는 계층으로 전체 데이터베이스 중에서 하나의 논리적인 부분을 의미한다. - 개념 스키마
개념 스키마(conceptual schema)는 개념 단계로 논리적인 데이터베이스 전체의 구조를 말한다.
개념 스키마는 전체 데이터베이스의 정의로 통합 조직별로 하나만 존재한다.
개념 스키마는 데이터베이스 관리자(Database Administrator)가 관리하며 데이터베이스 관리자를 DBA 라고 한다.
개념 스키마는 저장장치에 독립적으로 기술되며 데이터와 관계, 제약사항, 무결성에 관한 내용이 포함된 데이터베이스 파일에 저장된 데이터의 형태를 나타낸다. - 내부 스키마
내부 스키마(internal schema)는 내부 단계로 물리적인 데이터의 구조를 말한다.
내부 스키마는 기억 장치 내에 데이터가 저장된 데이터의 물리적인 설계도이다.
내부 스키마는 물리적 저장장치에 데이터베이스가 실제로 저장되는 방법의 표현이다.
내부 스키마는 하나며 인덱스, 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함된다.
2. 매핑 (mapping)
키(key) 역할을 하는 데이터와 값(value) 역할을 하는 데이터를 하나씩 짝지어 저장하는 데이터 구조다.
- 외부/개념 매핑
사용자의 외부 스키마와 개념 스키마 간의 매핑으로 외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당하는지 대응시킨다. - 개념/내부 매핑
개념 스키마의 데이터가 내부 스키마의 물리적 장치 어디에 어떤 방법으로 저장되는지 대응시킨다.
< 데이터베이스 모델링 >
데이터 모델링 : 데이터베이스를 구성하는 데이터의 형태로 여러 가지 연산을 하는 것을 의미

< 데이터 독립 >
논리적 데이터 독립과 물리적 데이터 독립으로 나누어진다.
물리적 독립성은 논리적 독립성보다 구현하기 쉽다.

- 논리적 데이터 독립(logical data independence)
외부 단계와 개념 단계 사이의 독립성으로 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원한다.
논리적 구조가 변경되어도 응용 프로그램에는 영향이 없도록 하는 개념이다. - 물리적 데이터 독립(physical data independence)
개념 단계와 내부 단계 사이의 독립성으로 저장장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원한다.
< 데이터 모델 >
현실세계에서 데이터베이스까지 만들어지는 과정
개념 데이터 모델 → 논리적 데이터 모델 → 물리적 데이터 모델
- 데이터 모델은 데이터베이스 내에 존재하는 데이터들 사이의 관계를 규정한다.
- 데이터 모델은 데이터의 의미와 데이터의 제약조건을 명시하기 위해 사용하는 개념적인 도구다.
- 데이터 모델은 데이터베이스에서 검색과 갱신을 수행하는 기본 연산들의 집합 뿐 아니라 점차 데이터베이스 응용의 동적 측면이나 행동도 데이터 모델에 포함하고 있다.

1. 개념 데이터 모델(Conceptual Data Model)
속성들로 기술된 개체 타입과 이 개체 타입 간의 관계를 이용한다.
데이터 표현의 논리적 성격에 초점을 맞추어 데이터를 개념적 단계와 뷰 단계에서 기술하는 것으로 융통성 있게 데이터를 구조화하고 데이터 제약조건을 분명히 지정할 수 있다.
1) E-R 모델(Entity-Relationship Model)
- E-R 모델은 데이터베이스 구조의 논리적 구조와 물리적 구조를 표현하기 위해 제안된 모델.
- 데이터 구조와 데이터 간의 관계를 개체 집합(Entity Set)과 관계 집합(Relationship Set)으로 도형화 하여 개념적으로 표현한다.
2) 시멘틱 객체 모델(Semantic Object Model)
- 시멘틱 객체 모델은 E-R 모델과 마찬가지로 데이터 모델의 한 형식이다.
- 시멘틱 객체는 식별 가능한 어떤 사물을 표현하는 것으로 고유한 개체를 충분히 기술해 주는 속성의 이름을 가진 집합을 의미한다.
- 시멘틱 객체는 사용자에 의해 독립적이고 분리된 것으로 인식되며 사용자가 추적하고 기록하려는 것을 나타낸다.
시멘틱 객체 모델의 구성 요소는 시멘틱 객체, 속성, 시멘틱 객체 뷰 등이 있다. - 시멘틱 객체 모델은 고유한 개체를 나타낼 수 있는 속성들의 집합으로 E-R 모델의 관계는 의미 객체 내부의 속성으로 표현된다.
3) 시멘틱 네트워크 데이터 모델(Semantic Network Data Model)
- 시멘틱 네트워크 데이터 모델은 인공지능 분야에서 지식을 표현하기 위해 개발된 방법으로 노드(Node)와 아크(Arc)로 구조를 표현한다.
- 노드는 사물을 개체 또는 인스턴스값으로 표현하고 아크는 사물 간의 관계 또는 단정(Assertion)을 표현한다.
- E-R 모델이 단순히 개체 간의 연관 관계만을 표현한다면은 시멘틱 네트워크 데이터 모델은 일반화, 부품, 인스턴스, 단정 관계 등 더 많은 관계를 표현할 수 있다.
4) OMT 모델(Object Modeling Technique Model)
- OMT 모델은 객체지향 소프트웨어 공학의 객체 모델링 기법이다.
- OMT 모델은 객체 관계 데이터베이스에 적합한 E-R 모델을 확장한 형태다.
2. 논리 데이터 모델(Logical Data Model)
논리적 데이터로 기술된 데이터 타입 간의 관계를 이용한다.
개념적 단계와 뷰 단계에서 데이터를 기술하는 데 사용한다.
데이터베이스의 전체적인 논리적 구조를 기술하는 데 사용한다.
1) 객체 데이터 모델(Object Data Model)
- 객체 데이터 모델은 개체의 관계를 통해서 모델링하므로 관계 데이터 모델이라고도 한다.
- 객체 데이터 모델은 단순하고 균일한 데이터 구조로 되어있어 많이 사용되고 있는 모델이다.
- 객체 데이터 모델은 개체의 모든 데이터와 데이터 사이의 관계를 2 차원의 테이블 형태로 기술한다.
- 객체 데이터 모델의 테이블에서 행은 하나의 개체를 나타내고 테이블의 열은 개체의 속성을 나타낸다.
(1) 객체 데이터 모델의 구성 요소
- 릴레이션: 릴레이션은 테이블을 지칭한다.
- 속성: 속성은 관계 테이블의 열로 파일 처리의 필드와 같다.
- 튜플: 튜플은 관계 테이블의 행으로 파일 처리의 레코드와 같다.
- 도메인: 도메인은 개개의 속성값 집합으로 취하는 값의 범위를 의미한다.
- 인스턴스: 인스턴스는 행의 실제값으로 실제 레코드를 의미한다.
(2) 객체 데이터 모델의 특성
- 사용자는 데이터를 테이블 형식으로 인식한다.
- 테이블은 행과 열로 구분하며 행의 중복은 허락되지 않는다.
- 행 순서는 임의로 설정하고 조회나 변경이 자유롭다.
- 각 열은 하나의 값만 가지고 각 열의 속성은 하나이며 열의 순서는 무관하다.
- null 값을 허용하며 모든 속성의 값은 원자값이다.
- 기본키인 주 식별자는 유일한 것이며 null 값을 가지지 않는다.
- 참조 무결성과 영역 무결성을 가진다.
- 높은 성능의 시스템 설비가 요구되며 설계 미숙 시 문제점이 발생할 확률이 매우 높다.
(3) 객체 데이터 모델의 장점
- 업무 변화에 따른 적응력이 탁월하며 시스템 설계가 단순하다.
- 구조가 탄력적이어서 필요할 때 테이블 사이의 연결을 통해 데이터를 생성할 수 있다.
- 데이터 간의 복잡한 관계를 개념적으로 간단하게 표현하며 강력한 데이터 조작 능력을 제공한다.
- 데이터의 첨가, 삭제, 수정이 쉽고 미래의 정보 요구에 신축성 있게 대응할 수 있다.
2) 계층 데이터 모델(Hierarchical Data Model)
- 계층 데이터 모델은 대표적인 초기 데이터 모델이라고 할 수 있으며 논리적 구조가 계층 성질을 갖는 트리 형태의 자료구조로 표현된다.
- E-R 모델의 개체를 레코드 타입으로 표현한다.
- E-R 모델의 1:N 관계로 레코드 타입을 부모-자식 관계로 표현한다.
- 필드의 집합을 세그먼트(segment)라고 한다.
- 계층 구조는 부모 세그먼트에서 시작하고 부모 요소 밑에는 여러 개의 자식 세그먼트가 있다.
- 데이터의 처리를 신속하게 할 수 있으며 데이터 성능에 대한 예측이 쉽다.
- 업무 변화에 따른 대응력이 부족하며 단순한 작업에 능통한 전산 요원이 필요하다.
- 계층 데이터 모델은 일대일 관계가 매우 복잡하고 삽입과 삭제 등의 운영 면에서도 복잡성을 가지고 있으므로 삭제 시 주의가 필요하다
3) 네트워크 데이터 모델(Network Data Model)
- 데이터 간의 가능한 연결을 허용함으로써 계층 데이터 모델의 단점을 보완한 모델이다.
- 데이터를 표현하는 데 있어 제한적인 트리 구조가 아닌 그래프 형태를 기반으로 한다.
- 그래프 형태이므로 1:M 관계, M:M 관계 등의 표현이 가능하지만, 데이터의 종속성이 필요하다
< 데이터 모델링의 흐름 >
1. 논리적 모델링(Logical Modeling)
사용하는 DBMS의 종류에 맞게 변환한다.
개념적 모델링에서 만든 ER 다이어그램을 사용하고자 하는 DBMS에 맞게 매핑하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정이다.
ER다이어그램은 DBMS의 특성에 따라 객체 데이터 모델, 네트워크 데이터 모델 등으로 매핑이 이루어진다.
- 과정
개념적 모델링에서 추출하지 않았던 상세 속성들을 모두 추출 → 정규화 → 데이터의 표준화를 수행
2. 물리적 모델링(Physical Modeling)
데이터베이스 스키마를 도출한다.
작성된 논리적 모델을 실제 컴퓨터의 저장장치에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정이다.
DBMS 의 특성에 맞게 저장구조를 정의해야 데이터베이스가 최적의 성능을 낼 수 있다
- 물리적 모델링 시 트랜잭션, 저장 공간 설계 측면에서 고려할 사항
응답시간 최소화
얼마나 많은 트랜잭션을 동시에 발생시킬 수 있는지 검토
데이터가 저장될 공간을 효율적으로 배치해야한다.
3. 데이터베이스 구현
설계 단계에서 생성한 스키마를 실제 DBMS 에 적용하여 테이블 및 관련 객체를 만든다.
관련 소프트웨어에 설계한 데이터베이스를 적용하여 서비스를 제공할 수 있도록 프로그램을 완성한다.
구현된 데이터베이스를 기반으로 소프트웨어를 구축하여 서비스를 제공한다.
데이터베이스 운영에 따른 시스템의 문제를 관찰하고 데이터베이스 자체의 문제점을 파악하여 개선한다.
데이터베이스가 지속해서 운영될 수 있도록 유지 보수한다.
< 데이터베이스의 프로그래밍 >
데이터베이스 프로그래밍은 RDBMS 에 데이터를 정의하고 저장된 데이터를 읽어와 데이터를변경하는 프로그램을 작성하는 과정
데이터 정의어(DDL)
- 데이터베이스를 구축하는데 필요한 매크로와 특수 명령어 군으로 이루어진 독립 언어로 논리적인 데이터의 정의, 기술을 위하여 사용된다.
- 데이터 항목, 레코드, 세그먼트, 그룹 데이터 항목 등을 규정한다.
- 키가 되는 데이터 항목을 규정하고 그 키가 유일한 것인지 중복된 것인지를 명시한다.
- 세그먼트 간의 관계를 규정하고 이름을 부여한다.
- 스키마, 도메인, 테이블, 뷰, 인덱스를 정의하거나 제거하는 문으로 구성된다.
- 데이터의 정의어로 정의된 내용은 메타데이터가 되고 시스템 카탈로그에 저장된다.
데이터 조작어(DML)
- 응용 프로그램이 데이터베이스에 명령하여 원하는 데이터를 사용자에게 제공할 수 있도록 한다.
- 데이터의 전송, 편집, 연산 등의 제어를 담당한다.
데이터 질의어(DQL)
- 데이터베이스에 대한 지식이 없는 일반 사용자들이 이용하는 언어이다.
- 비절차어의 일종으로 자연어로 되어있어 대화식으로 데이터베이스를 쉽게 이용하게 되어있다.
'Programming > SQL 기초' 카테고리의 다른 글
[ SQL ] 데이터베이스 #3 SQL (1) | 2022.12.07 |
---|---|
[ SQL ] 데이터베이스 #2 JDK 설치 (0) | 2022.12.07 |
[ SQL ] Oracle connect DB #1 _ Python 이용 (0) | 2022.12.06 |
[ SQL ] Oracle connect DB #1 _ R 이용 (0) | 2022.12.06 |
Live SQL - Code Library (0) | 2022.10.20 |