일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- javascriptcalendar
- 페치조인
- JPA
- javaservlet
- jscalendar
- 벌크연산
- 프로젝트생성
- 페이징
- fullcalendar
- jQueryUI
- springflow
- 엔티티직접사용
- 제네릭
- Hibernate
- JPQL
- calendar
- values()
- jQuery값전달
- 대량쿼리
- 자바서블릿
- joinfetch
- LIST
- namedQuery
- Generic
- fetchjoin
- 스프링데이터흐름
- paging
- JQuery
- 제너릭
- jQuery값전송
- Today
- Total
가자공부하러!
데이터베이스(1) - 데이터베이스 기본 본문
전체적으로 공무원스럽다 개노잼
1. 데이터베이스 개념
1. 데이터베이스의 정의
> 통합 데이터(Integrated Data) : 검색의 효율성을 위해 중복이 최소화된 데이터의 모임
> 저장 데이터(Stored Data) : 컴퓨터가 접근 가능한 저장 매체에 저장된 데이터
> 운영 데이터(Operational Data) : 조직의 목적을 위해 존재 가치가 확실하고 반드시 필요한 데이터
> 공유 데이터(Shared Data) : 여러 응용 프로그램들이 공동으로 사용하는 데이터
2. 데이터베이스의 특징
> 실시간 접근성(Real Time Accessibility) : 사용자의 질의에 대하여 즉시 처리하여 응답하는 특징
> 계속적인 진화(Continuous Evolution) : 삽입, 삭제, 갱신을 통하여 항상 최근의 정확한 데이터를 동적으로 유지하는 특징
> 동시 공유(Concurrent Sharing) : 여러 사용자가 동시에 원하는 데이터를 공용할 수 있는 특징
> 내용에 의한 참조(Content Reference) : 데이터베이스에 있는 데이터를 참조할 때 튜플(Tuple)의 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터 내용에 따라 참조하는 특징
> 데이터의 논리적, 물리적 독립성(Independence)
- 논리적 독립성 : 응용 프로그램과 데이터베이스를 독립
ㄴ 데이터의 논리적 구조가 변경되어도 응용프로그램은 변경되지 않는 특징
- 물리적 독립성 : 보조기억장치, 응용프로그램 등의 물리적 장치를 독립
ㄴ 새로운 디스크를 도입하더라도 응용프로그램 등에는 영향을 주지 않고 데이터의 물리적 구조만 변경할 수 있음
3. 데이터베이스 시스템
> 데이터베이스 시스템? : DB를 이용하여 자료를 저장하고 관리하여 정보를 얻어내는 데 필요한 컴퓨터 중심의 시스템
> 데이터베이스 시스템의 구성 요소
- 데이터베이스, 스키마, DBMS(Data Base Management System), 데이터베이스 언어,
데이터베이스 컴퓨터, 데이터베이스 사용자
4. 데이터 언어 ( Data Language )
> 데이터 언어? : 데이터베이스를 구축하고 이용하기 위한 데이터베이스 관리시스템과의 통신 수단.
> 데이터 언어는 기능과 사용 목적에 따라 3가지로 나뉜다
- DDL ( Data Definition Language ) : 데이터 정의어
ㄴ 데이터베이스 구조, 데이터 형식, 접근 방식 등 데이터베이스를 구축하거나 변경할 목적의 언어
ㄴ DDL 컴파일러가 컴파일 한 후 데이터 사전에 저장
ㄴ 기능
ㄴ 데이터베이스의 논리적, 물리적 구조를 정의 및 변경
ㄴ 스키마에 사용되는 제약 조건을 정의
ㄴ 데이터의 물리적 순서를 규정
- DML ( Data Manipulation Language ) : 데이터 조작어
ㄴ 데이터 처리를 위해서 응용 프로그램과 데이터베이스 관리 시스템 간의 인터페이스를 위한 언허
ㄴ 데이터 처리를 위한 연산의 집합으로 데이터의 검색, 삽입, 삭제, 갱신 연산 등이 있다.
ㄴ DML의 형테
ㄴ 절차적 데이터 조작어 :
ㄴ 사용자가 어떤(What) 데이터를 필요로 하는지 명시
ㄴ 사용자가 어떻게(How) 필요한 데이터를 구하는지까지 명시
ㄴ 배우기도 어렵고 사용도 어렵다.
ㄴ 비절차적 데이터 조작어 :
ㄴ 사용자가 어떤(What) 데이터가 필요한지만을 명시
ㄴ 사용자가 어떻게(How) 필요한 데이터를 구하는지는 명시하지 않음
ㄴ 학습과 조작은 용이하지만 코드 효율성 면에서 비효율적
- DCL ( Data Control Language ) : 데이터 제어어
ㄴ 보안 및 권한 제어, 무결성, 회복, 병행 제어를 위한 언어이다.
ㄴ DCL의 기능
ㄴ 데이터 보안 : 권한이 없는 접근으로부터 데이터베이스를 보호한다.
ㄴ 데이터 무결성 : 의미적 측면에서 데이터가 정확하고 완전함을 의미한다. 사용자가 무결성 제약 조건을 정의하면 데이터베이스 관리 시스템은 데이터를 삽입, 삭제, 갱신할 때 마다 제약 조건을 자동적으로 검사한다.
ㄴ 데이터 회복 : 시스템 오류 등으로부터 데이터베이스를 회복한다.
ㄴ 병행 제어 : 여러 사용자가 동시에 데이터베이스를 공유할 수 있도록 한다.
5. 데이터베이스 사용자
> 데이터베이스 관리자 (DBA : DataBase Administraror)
- DDL과 DCL을 통해 데이터베이스를 정의하고 제어하는 사람 또는 그룹
- 데이터베이스 관리 시스템과 컴퓨터 시스템, 그리고 조직 내의 전산 업무에 상당한 지식을 보유해야 한다.
- 주요 임무는 DB설계, 관리, 운용, 통제이며 효율성과 경제적 효용성 향상을 위해 시스템을 감시하고 성능을 분석.
> 데이터 관리자 (Data Administrator)
- 하나의 기업 또는 조직 내에서 데이터에 대한 정의, 체계화, 감독 및 보안 업무를 담당할 뿐 아니라 기업 또는 조직 전반에 걸쳐 존재하는 데이터에 대한 관리를 총괄하고 정보 활용에 대한 중앙 집중적인 계획 수립 및 통제를 수행한다.
- 전사적으로 수립된 데이터 표준 원칙, 데이터 표준, 데이터 표준 준수 여부 관리
> 데이터 설계자 (Data Architect)
- 기업의 업무 수행에 필요한 데이터의 구조를 체계적으로 정의하는 사람
- 데이터 구조를 정의하기 위해 데이터 구조 전반에 걸쳐 데이터 구조 원칙, 데이터 구조 정보, 데이터 구조 관리 등을 정의해야 한다.
- 데이터 표준, 데이터 관리 체계 등을 포함하는 데이터 영역을 분류하며, 이를 기준으로 데이터 모델을 생성.
> 응용 프로그래머 (Application Programmer)
- 호스트 프로그래밍 언어에 DML을 삽입하여 데이터베이스에 접근하는 사람
- 호스트 프로그래밍 언어를 사용할 수 있고, 데이터베이스 관리 시스템에 대해서도 알고 있는 전산 전문가를 지칭
> 일반 사용자 (End User)
- 질의어(Query Language)를 통해 데이터베이스 관리 시스템에 접근하는 사람을 지칭
- 컴퓨터나 데이터베이스 관리 시스템에 대한 지식 필요 없음
- 데이터 삽입, 삭제, 갱신, 검색 등의 목적으로 데이터베이스 관리 시스템 활용
2. 데이터베이스 관리 시스템
1. 데이터베이스 관리 시스템의 개념
> 사용자와 DB 간 사용자의 요구에 따라 정보를 생성해주고 DB를 관리해 주는 소프트웨어
2. 데이터베이스 관리 시스템의 필수 기능
> 정의 기능(Definition Facility) : 데이터의 타입, 구조, 저장 시의 제약조건 등을 명시하는 기능 제공
> 조작 기능(Manipulation Facility) : 체계적 데이터 처리를 위해 데이터 접근 기능을 명시(검색, 삽입, 삭제, 갱신 등)
> 제어 기능(Control Facility) : 데이터의 정확성과 안전성을 유지하기 위해 무결성, 보안 및 권한 검사, 병행제어 명시
3. DBMS의 장/단점
> 장점 :
- 데이터의 논리적, 물리적 독립성 보장
- 데이터 공동 이용 가능
- 데이터 표준화 가능
- 데이터 무결성 유지 가능
- 데이터 실시간 처리 가능
- 데이터 중복 배제 가능
- 데이터를 통합하여 관리 가능
- 데이터의 일관성 유지 가능
- 데이터의 보안 유지 가능
- 항상 최신의 데이터를 유지 가능
> 단점 :
- 데이터베이스 전문 인력 부족
- 대용량 디스크로의 집중적인 접근 때문에 과부하 발생 가능성 존재
- 전산화 비용 증가
- 데이터의 백업과 회복이 어려움
- 시스템 복잡도 증가
3. 스키마
1. 스키마의 개념
> 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세(Specification)를 의미
> 스키마는 DB를 구성하는 요소들을 전반적으로 정의한다.
- 데이터 개체(Entity), 속성(Attribute), 관계(Relationship), 데이터 조작 시 데이터 값들이 갖는 제약 조건 등
> 스키마는 사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 나뉜다.
2. 스키마의 특징
> 데이터의 구조적 특성을 의미
> 데이터 사전에 저장됨(Data Dictionary)
> 현실 세계의 특정한 한 부분의 표현으로서 특정 데이터 모델을 이용해서 만들어진다.
> 시간에 따라 불변인 특성을 보유
> 데이터의 논리적 단위에 명칭을 부여하고 그 의미를 기술
3. 스키마의 3계층
> 외부 스키마
- 사용자나 응용프로그래머가 각 개인의 입장에서 필요로 하는 DB의 논리적 구조를 정의한 것
- 서브스키마 라고도 한다 (전체 DB의 한 논리적인 부분으로 볼 수 있기 때문)
- 하나의 DBMS에 여러개의 외부 스키마가 존재할 수 있다.
- 하나의 외부 스키마는 여러 개의 응용 프로그램이나 사용자에 의해 공유될 수 있다.
- 각각의 외부 스키마는 동일한 DB에 대해 서로 다른 관점을 정의할 수 있도록 허용됨
> 개념 스키마
- 개념 스키마는 단 하나만 존재 > DB의 전체적인 논리적 구조이다
- 개체 간의 관계와 제약조건이 명시되어 있음
- DB 접근 권한, 보안 정책, 무결성 규정에 관한 정의를 포함
- 단순히 스키마라고 하면 개념 스키마를 의미한다
- 개념 스키마는 기관이나 조직의 관점에서 데이터베이스를 정의한 것
- 개념 스키마는 데이터베이스 관리자에 의해서 작성됨
> 내부 스키마
- 데이터베이스의 물리적 구조를 정의한 것
- 물리적 저장장치의 관점에서 본 전체 DB의 명세이며 단 하나만 존재한다.
- 개념 스키마의 물리적 저장 구조에 대한 정의를 기술한 것
- 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마이다.
4. 데이터베이스 설계
1. 데이터베이스 설계의 개념
> DB의 구조, 즉 DB 스키마를 개발하는 과정을 뜻함
> 요구조건 분석 > 개념적 설계 > 논리적 설계 > 물리적 설계 > DB 구현 > 요구조건 분석 > ...
> 데이터 중심 설계 + 처리 중심 설계
- 데이터 중심 설계 : DB구조 설계에 집중
- 처리 중심 설계 : 데이터 처리 및 응용 방법 설계에 집중
2. 요구 조건 분석
> DB를 사용자가 필요로 하는 용도를 파악하는 작업
> 사용자의 요구조건을 수집하고 분석하여 공식적인 요구 조건 명세 작성
- 정적 정보 구조(개체, 속성, 관계, 제약 조건 등)
- 동적 DB 처리 요구 조건(트랜잭션의 유형, 트랜잭션의 실행 빈도 등)
- 범기관적 제약조건에 대한 요구 조건(기관의 경영 목표, 정책, 규정 등)
> 작성된 요구 조건 명세는 주요 사용자 그룹과 다시 검토하고 확인한 후 최종 시스템 명세로 확정
3. 개념적 설계
> 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 정보의 구조를 얻기 위하여 현실 세계의 무한성과 계속성을 이해하고 다른 사용자와 통신하기 위함
> 개념 스키마 모델링 + 트랜잭션 모델링 병행 수행
- 개념 스키마 모델링 : 데이터의 조직과 표현에 집중된 데이터 중심 설계
- 트랜잭션 모델링 : 응용을 위한 데이터 처리에 집중된 처리 중심 설계
> 요구조건 분석의 결과로 나온 요구조건 명세를 토대로 개념적 데이터 모델에서의 데이터 구조(개념스키마)를 기술
- 기술 절차의 기본 원리는 추상화이다.
ㄴ 추상화 : 복잡한 것들을 단순화 하는 것을 의미. (집단화, 일반화 등 포함)
ㄴ 집단화 : 여러 속성들을 그룹지어 하나의 개체로 통합하는 추상화 방법
ㄴ 일반화 : 공통된 성질을 가진 여러 부류의 개체들을 보다 일반적이고 포괄적인 개체로 만드는 추상화 방법
4. 논리적 설계
> 현실 세계에서 발생한 데이터 형태를 컴퓨터가 이해할 수 있도록 논리적 데이터 구조로 변환시키는 과정
- 특정 DB관리 시스템을 우선적으로 선정하고, 해당 시스템이 지원하는 논리적 데이터 구조로 변환해야 한다
- 시스템 선정 시 비용 고려 필요(소프트웨어 획득 비용, 유지 비용, DB구축 및 전환 비용, 교육 비용)
> 논리적 데이터 모델에서의 데이터 구조(=논리 스키마)를 설계한다
> 관계형 DBMS를 선정한 경우
ㄴ 개념적 설계에서 기술한 ER 도형을 정형적인 규칙에 따라 릴레이션 스키마로 변환
> 더욱 좋은 릴레이션 스키마를 제작하기 위해 정규화 과정을 수행한다.
> 개념적 설계에서 기술한 트랜잭션 명세로 부터 트랜잭션의 전체적인 골격을 개발하고 인터페이스를 정의한다.
5. 물리적 설계
> DB 파일에 대한 특정한 저장 구조와 접근 경로를 결정하는 과정
- 목적 : 효율적이고 구현 가능한 물리적 데이터베이스 구조(물리 스키마) 설계
- 목적2 : 주어진 응용프로그램에 대한 성능 향상
> 물리적 설계의 내용
- 저장 구조 명세 관련 : 레코드 양식 설계, 레코드의 순서 설계, 저장 공간 설계
- 접근 경로 명세 관련 : 인덱싱 설계, 클러스터링 설계, 해싱 설계
> 효과적인 설계를 위한 고려사항
- DB 트랜잭션을 요청해서 응답을 얻기까지의 응답 시간
- DB 파일과 접근 경로 구조에 대한 저장 공간의 효율성
- 단위 시간동안 처리되는 트랜잭션의 평균 수, 즉 트랜잭션 처리도
> 논리적 설계에서 기술한 트랜잭션의 인터페이스로부터 상세 트랜잭션을 정의
6. 데이터베이스 구현
> DB를 실제로 구축하는 과정
> 미리 선정된 관리 시스템의 DDL로 기술된 명령문을 실행하여 DB 스키마와 DB 파일을 생성
- 필요에 따라 DB에 데이터 입력
> 구현 단계에서는 응용 프로그래머에 의해 상세 트랜잭션이 실행 트랜잭션으로 구현된다
- DML로 기술된 명령문을 가지는 프로그램 코드가 작성됨
5. ER(Entity Relationship) 모델
1. ER 모델
> ER 모델 ?
- 개념적 데이터 모델의 가장 대표적인 모델
- 1976, 피터 첸(Peter Chen)에 의해 제안됨
> 개체, 속성, 관계 등에 대하여 용이하게 표현할 수 있는 ER도형(ERD : Entity Relationship Diagram)을 정의하고 있다.
2. ER 도형
> ER모델은 몇 가지 도형들을 이용하여 현실 세계를 표현한다.
> ER 모델에서 사용하는 중요한 도형에는 다음과 같은 것이 있다.
3. 개체 및 개체 타입
> 개체는 현실 세계의 객체이다.
- 유형 또는 무형의 정보 대상으로 존재
- 개체의 특성을 나타내는 속성을 갖는다.
> 하나의 개체는 개체 어커런스 또는 개체 인스턴스로 지칭한다.
> 개체 인스턴스의 집합에 대한 공통 특성을 갖는 개체 클래스를 개체 타입이라 한다.
4. 관계 및 관계 타입
> 관계? : 2개 이상의 개체 사이에 존재하는 연관성을 뜻하며 차수와 카디널리티를 갖는다
- 차수(Degree) : 관계에 참여하는 개체 타입의 개수
ㄴ 차수에 따른 관계의 종류 :
ㄴ 단항(Unary) 관계 : 관계에 참여하고 있는 개체 타입이 1개인 관계
ㄴ 이항(Binary) 관계 : " 2개인 관계
ㄴ 삼항(Ternary) 관계 : " 3개인 관계
ㄴ n항(n-ary) 관계 : " n개인 관계
- 카디널리티(Mapping Cardinality) : 관계에 참여하는 개체 인스턴스의 개수
ㄴ 대응 카디널리티에 따른 관계의 종류
ㄴ 1:1 관계 : 관계에 참여하고 있는 두 개체 타입이 모두 하나씩의 개체 인스턴스를 갖는 관계.
ㄴ 1:N 관계 : 관계의 참여하고 있는 한 개체 타입은 여러 개의 개체 인스턴스를 가질 수 있고, 다른 한 개체 타입은 하나의 개체 인스턴스를 갖는 관계.
ㄴ N:M 관계 : 관계에 참여하고 있는 두 개체 타입이 모두 여러 개의 개체 인스턴스를 가질 수 있는 관계.
ㄴ ISA 관계 :
ㄴ 같은 속성을 갖는 여러 개체들을 하나의 상위 개체로 결합할 수 있다
ㄴ 특정 개체는 서로 구별되는 여러 하위 개체로 나누어 질 수 있다.
ㄴ disjoint : 상위 개체의 멤버가 하나의 하위 개체에만 포함
ㄴ overlapping : 상위 개체의 멤버가 여러 하위 개체에 포함 될 수 있음
ㄴ total : 상위 개체의 멤버가 하위 개체에 속하는 경우
ㄴ partial : 상위 개체의 멤버가 하위 개체에 속하지 않는 경우
> 관계 타입? : 같은 관계들의 집합 또는 틀을 뜻함
5. 속성
> 개체 또는 관계의 특성이나 상태를 기술한 것
> 속성이 가질 수 있는 모든 가능한 값들의 집합을 도메인이라 한다.
> 모든 개체 타입은 그 개체를 유일하게 식별해 주는 기본키에 속하는 속성을 포함한다.
> 속성에는 단순 속성(Simple Attribute)과 복합 속성(Composite Attribute)이 있다.
ㄴ 단순 속성 : 더 이상 다른 속성으로 나눌 수 없는 속성
ㄴ 복합 속성 : 2개 이상의 속성들로 분해할 수 있는 속성
'공부 > 정보처리기사(실기)' 카테고리의 다른 글
데이터베이스(3) - SQL(DDL, SELECT) (0) | 2019.05.28 |
---|---|
데이터베이스(2) - 관계형 데이터베이스와 관계 연산 (0) | 2019.05.25 |
알고리즘(8) - 실무응용2 (0) | 2019.04.03 |
알고리즘(7) - 배열응용2, 실무응용 (0) | 2019.04.02 |
알고리즘(6) - 배열응용 (0) | 2019.04.02 |