일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- Los
- CODEGATE
- SQLInjection
- ubuntu
- Python
- lordofsqlinjection
- 해킹
- crosssitescripting
- XSS
- ctf
- webhackingkr
- hacking
- SQL
- Writeup
- rubiya
- 상호배제
- sqli
- MySQL
- Linux
- 시스템
- 시스템프로그래밍
- 프로세스
- 알고리즘
- 웹해킹
- 운영체제
- web
- webhacking.kr
- WebHacking
- CCE
- SQL Injection
- Today
- Total
One_Blog
데이터베이스 - 시험 대비 정리 본문
교재 : 데이터베이스 개론 2판
데이터베이스 개론
데이터 : 현실세계에서 단순히 관찰하거나 측정하여 수집한 사실이나 값
정보 : 의사결정에 유용하게 활용할 수 있도록 데이터를 처리한 결과물
데이터와 정보
정보처리 : 데이터에서 정보를 추출하는 과정 또는 방법
정보 시스템 : 데이터를 수집하여 저장해두었다가 필요할 때 유용한 정보를 만들어주는 수단
데이터베이스 : 정보 시스템 안에서 데이터를 저장하고 있다가 필요할 떄 저장하는 역할을 담당
데이터베이스의 정의
- 특정 조직의 여러 사용자들이 공유하여 사용할 수 있도록 통합해서 저장한 운영데이터의 집합
공유데이터
- 특정 조직의 여러 사용자들이 함께 소유하고 이용할 수 있어야 함
통합데이터
- 데이터의 중복을 최소화하고 통제가 가능한 중복만 허용
운영데이터
- 조직을 운영하고 주요 기능을 수행하기 위해 꼭 필요하며, 지속적으로 유지해야 하는 데이터
저장데이터
- 데이터 처리는 컴퓨터가 하기에 데이터를 컴퓨터가 접근 할 수 있는 매체에 저장해야 함
외우기->공통운전(저)
데이터베이스의 특징
실시간 접근성
- 사용자가 요구하면 원하는 데이터를 빠르게 제공
계속 변화
- 현실 세계의 상태를 정확히 반영(동적인 특징이 존재하며, 삽입 , 수정 , 삭제하며 정확한 데이터를 유지)
동시 공유
- 여러 사용자가 서로 다른 데이터를 동시 사용 및 같은 데이터를 동시 사용하는 것을 지원
내용 기반 참조
- 주소나 위치가 아닌 값으로 참조 가능
외우기->실내동계
데이터의 분류
구조화된 형태에 따른 데이터 분류
정형 데이터
- 미리 정해진 구조에 따라 저장된 데이터
반정형 데이터
- 구조에 따라 저장된 데이터지만 데이터 내용 안에 구조에 대한 설명이 존재
비정형 데이터
- 정해진 구조가 없이 저장된 데이터
특성에 따른 데이터 분류
범주형 데이터
- 명목형 데이터
-- 데이터 사이 서열이 없는 데이터
- 순서형 데이터
-- 데이터 사이 서열이 있는 데이터
수치형 데이터
- 이산형 데이터
-- 개수를 세는 데이터
- 연속형 데이터
-- 측정하는 데이터
데이터베이스 관리 시스템
파일 시스템
- 데이터를 파일로 관리하기 위해 파일을 CRUD하는 기능을 제공하는 소프트웨어
- 응용 프로그램별로 필요한 데이터를 별도의 파일로 관리
파일 시스템의 문제점
데이터 중복성
- 같은 내용의 데이터가 여러 파일에 중복 저장
데이터 종속성
- 응용 프로그램이 데이터 파일에 종속적
기능 부족
- 데이터 파일에 대한 동시 공유, 보안, 회복 기능이 부족
개발의 어려움
- 응용 프로그램의 개발이 어려움
DBMS의 등장
데이터베이스 관리 시스템
- 필요한 데이터를 데이터베이스에 통합하여 저장하고 관리
- 사용자는 요청만 하면 되며, 데이터베이스의 구조 및 접근, 처리 방법을 자세히 알 필요 없음
- 데이터 변동 발생 시 사용자가 처리하거나 응용 프로그램이 변경될 필요가 없음 (데이터의 독립성)
주요 기능
정의 기능
- 데이터베이스 구조를 정의하거나 수정 가능
조작 기능
- 데이터를 삽입, 수정, 삭제, 검색하는 연산 가능
제어 기능
- 데이터를 항상 정확하고 안전하게 유지 가능
DBMS의 장점
1) 데이터 중복을 통제할 수 있다. (데이터의 일관성 유지)
2) 데이터 독립성이 확보된다.
3) 데이터를 동시 공유할 수 있다.
4) 데이터 보안이 향상된다. (중앙 집중식 관리를 이용하여 데이터에 대한 효율적인 접근 제어 수행)
5) 데이터 무결성을 유지할 수 있다. (연산이 수행될 때마다 유효성을 검사)
6) 표준화 할 수 있다. (DBMS가 미리 정한 표준화 방식을 통해 DB에 접근)
7) 장애 발생 시 회복이 가능하다. (데이터 일관성을 유지하며 이전 상태로 복구)
8) 응용 프로그램 개발 비용이 줄어든다. (개발 및 유지 보수 비용이 감소)
DBMS의 단점
1) 고비용
- DBMS 구매 비용, 복잡한 기능을 제공하기에 컴퓨터 자원을 많이 점유함
2) 복잡한 백업 및 복구
- 데이터베이스는 구조가 복잡하고 동시 공유를 지원하기에 장애의 원인과 상태를 정확히 파악하기 어려움
3) 중앙 집중 관리로 인한 취약점이 존재
- 장애 발생 시 전체 시스템의 업무 처리가 중단
- 데이터베이스에 대한 의존도가 높은 시스템일수록 가용성 및 신뢰성에 치명적
데이터베이스 관리 시스템의 발전 과정
파일 시스템
-> 네트워크 , 계층 DBMS
-> 관계 DBMS
-> 객체 DBMS, 객체 관계 DBMS
-> NoSQL DBMS
-> NewSQL DBMS
데이터베이스 시스템
정의 (DBMS와 다름)
- 데이터베이스에 데이터를 저장하고, 이를 관리하여 조직에 필요한 정보를 생성해주는 시스템
데이터베이스 시스템의 구성요소
데이터베이스 + DBMS + 사용자 + 데이터언어 + 컴퓨터
DB의 구조
스키마
- 데이터베이스에 저장되는 데이터 구조와 제약 조건을 정의한 것
인스턴스
- 스키마에 따라 데이터베이스에 실제로 저장된 값
3단계 데이터베이스 구조
외부 단계
- 개별 사용자 관점 ( 집주인 관점 )
- 개별 사용자가 데이터베이스를 어떻게 보는 가를 표현
- 사용자마다 생각하는 데이터베이스 구조가 다름
- 외부스키마(서브스키마) : 외부 단계에서 사용자에게 필요한 데이터베이스를 정의한 것
-> 데이터베이스 하나에 외부 스키마 여러 개 존개 가능, 외부 스키마 하나를 목적이 같은 사용자들과 공유 가능
개념 단계
- 조직 전체의 관점 ( 관리인 관점 )
- 사용자들의 관점을 통합하여 데이터베이스를 조직 전체의 관점에서 이해하고 표현
- 개념 스키마 : 개념 단계에서 모든 사용자에게 필요한 데이터를 통합하여 전체 데이터베이스의 논리적 구조를 정의한 것
- 개념 스키마 : 뿐만 아니라 보안 정책이나 접근 권한에 대한 정의도 포함
-> 데이터베이스 하나에 개념 스키마는 하나만 존재하며, 일반적으로 스키마는 개념 스키마를 의미한다.
내부 단계
- 저장 장치의 관점 ( 건설업체 관점 )
- 내부스키마 : 내부 단계에서 전체 데이터베이스가 저장장치에 실제로 저장되는 방법을 정의한 것
- 내부스키마 : 레코드 구조, 필드 크기, 레코드 접근 경로 등 물리적 저장 구조를 정의
-> 데이터베이스에 내부 스키마는 하나만 존재
3단계 데이터베이스 구조의 사상
외부/개념 사상 : 외부 스키마와 개념 스키마의 대응 관계 (응용 인터페이스)
개념/내부 사상 : 개념 스키마와 내부 스키마의 대응 관계 (저장 인터페이스)
미리 정의된 사상 정보를 이용해 사용자가 원하는 데이터에 접근 : 데이터 독립성의 실현
논리적 데이터 독립성 : 개념 스키마가 변경되더라도 외부 스키마가 영향받지 않는 것 (외부/개념 사상)
물리적 데이터 독립성 : 내부 스키마가 변경되더라도 개념 스키마가 영향 받지 않는 것 (개념/내부 사상)
시스템 DB와 사용자 DB
데이터의 독립성 실현을 위한 사상 정보를 저장할 공간이 필요함.
데이터 사전 (시스템 카탈로그)
- 데이터베이스에 저장되는 데이터에 관한 정보를 유지하는 시스템 데이터베이스
- 스키마, 사상정보, 다양한 제약조건 등을 저장
- 데이터베이스 관리 시스템이 스스로 생성하고 유지함
- 일반 사용자도 접근이 가능하지만 저장 내용을 검색만 할 수 있음
- 데이터 사전에 저장되는 데이터를 메타 데이터라고 부름
데이터 디렉터리
- 데이터 사전에 있는 데이터에 실제로 접근하는데 필요한 위치 정보를 저장하는 시스템 데이터베이스
- 일반 사용자의 접근은 허용되지 않음
사용자 데이터베이스
- 사용자가 실제로 이용하는 데이터가 저장되어 있는 일반 데이터베이스
데이터 베이스의 사용자
- 이용 목적에 따라 구분
데이터베이스 관리자 (DBA)
- 데이터 베이스 시스템을 운영 및 관리하고, DB를 설계 및 구축한다.
- 제대로 서비스할 수 있도록 데이터베이스를 제어한다.
- 데이터 정의어와 데이터 제어어를 이용해 데이터베이스에 접근한다.
일반 사용자
- 데이터베이스에 접근하여 데이터를 조작하는 사람
- 주로 데이터 조작어를 이용
응용 프로그래머
- 프로그래밍 언어로, 응용프로그램을 작성할 때 데이터베이스에 접근하는 데이터 조작어를 삽입하는 사람
- 주로 데이터 조작어를 이용
데이터의 언어
데이터 정의어 (DDL)
- 스키마를 정의하거나 수정 또는 삭제하기 위해 사용 (Create , Alter , Drop)
데이터 조작어 (DML)
- 데이터의 삽입, 수정,삭제,검색 등의 처리를 요구하기 위해 사용 (Insert,Delete,Update,Select)
데이터 제어어 (DCL)
- 내부적으로 필요한 규칙이나 기법 등을 정의하기 위해 사용 (Commit, Rollback, Commit, Revoke)
- 무결성, 보안, 회복, 동시성을 제어함
DBMS의 주요 구성 요소
질의 처리기
- 사용자의 데이터 처리 요구를 해석하여 처리
- DDL 컴파일러
- DML 프리 컴파일러
- DML 컴파일러
- 런타임 데이터베이스 처리기
- 트랜잭션 관리자
저장 데이터 관리자
- 디스크에 저장된 데이터 버스와 데이터 사전을 접근하고 관리함
- 디스크에 저장된 데이터에 접근하는 것은 운영체제의 기본 기능이기에 운영체제의 도움을 받아 데이터베이스에 대한 접근을 수행
데이터 모델링
- 현실세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정
추상화 : 데이터베이스에 저장하여 관리할 가치가 있는 중요데이터를 추출하는 것 (분석과 관찰)
2단계 데이터 모델링
개념적 모델링 : 현실 세계에서 중요 데이터를 추출하여 개념 세계로 옮기는 작업
논리적 모델링 : 개념 세계의 데이터를 데이터베이스에 저장할 구조를 결정하고 구조로 표현하는 작업
데이터 모델
- 데이터 모델링의 결과물을 표현하는 도구
데이터 구조 + 연산 + 제약 조건으로 구성
데이터 구조
- 자주 변하지 않고 정적임
연산
- 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업, 동적임
제약조건
- 구조적 측면, 의미적 측면의 제약 사항이 존재
개념적 데이터 모델
- 현실 세계를 개념적 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구
- 개체-관계 모델(ER모델)
논리적 데이터 모델
- 개념적 구조를 논리적 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구
- 관계 데이터 모델
E - R 모델 (개체 - 관계 모델)
개체 - 관계 모델
- 개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현하는 방법
- 머릿속에 그릴 수 있는 개념적인 구조로 모델링하는 것이기에 어떤 DBMS로 데이터베이스를 구축하는 지 상관 없음
개체 - 관계 다이어그램
- 개체 - 관계 모델을 그림으로 표현한 것
개체(Entity)
- 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것
- 저장할 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물, 개념, 사건
- 다른 개체와 구별되는 이름을 가지고 있고, 속성을 하나 이상 가지고 있음
- E-R다이어 그램에서 사각형으로 표현되며, 사각형 안에 이름을 표기
개체 타입 : 개체를 고유 이름과 속성들로 정의한 것
개체 인스턴스 : 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체
개체 집합 : 개체 인스턴스들의 집합
속성
- 개체나 관계가 가지고 있는 고유한 특성
- 의미있는 데이터의 가장 작은 논리적 단위
- E-R다이어 그램에서 타원으로 표현되며, 타원 안에 이름을 표기한다.
속성의 분류
단일 값 속성
- 값을 하나만 가질 수 있는 속성
다중 값 속성
- 값을 여러 개 가질 수 있는 속성
- E-R다이어 그램에서 이중타원으로 표현
단순 속성
- 의미를 더는 분해할 수 없는 속성
복합 속성
- 의미를 분해할 수 있는 속성
유도 속성
- 기존의 다른 속성 값에서 유도되어 결정되는 속성
- 값이 별도로 저장되지 않음
- E-R다이어 그램에서 점선타원으로 표현
널 속성
- NULL이 허용되는 속성
키 속성
- 각 개체 인스턴스를 식별하는데 사용되는 속성
- 모든 개체 인스턴스의 키 속성이 다름
- 둘 이상의 속성들로 구성되기도 함
- E-R다이어그램에서 밑줄로 표현
관계
- 개체와 개체가 맺고 있는 의미있는 연관성
- 개체 집합들 사이의 대응 관계, 즉 매핑을 의미
- E-R다이어 그램에서 마름모로 표현
관계의 유형
이항관계
- 개체 타입 2개가 맺는 관계
삼항 관계
- 개체 타입 3개가 맺는 관계
순환 관계
- 개체 타입 1개가 자기 자신과 맺는 관계
매핑 카디널리티
- 관계를 맺는 집합에서, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 갯수
- 1:1, 1:N, N:M 등의 관계를 연결선을 명시함으로써 표현
관계의 참여 특성
필수적 참여(전체 참여)
- 모든 개체 인스턴스가 관계에 반드시 참여해야 되는 것을 의미
- E-R다이어 그램에서 이중선으로 표현
선택적 참여(부분 참여)
- 개체 인스턴스 중 일부만 관계에 참여해도 되는 것을 의미
관계의 종속성
존재 종속
- 개체 B가 삭제되면 개체 A도 삭제되어야 함을 의미
약한 개체
- 다른 개체의 존재 여부에 의존적인 개체
강한 개체
- 다른 개체의 존재 여부를 결정하는 개체
강한 / 약한 개체의 특징
- 강한 개체와 약한 개체는 일반적으로 1:N 관계
- 약한 개체는 강한 개체와의 관계에 필수적으로 참여
- 약한 개체는 강한 개체의 키를 포함하여 키를 구성
-- 약한 개체를 구별해주는 속성을 구별자 또는 부분키라고 함
- 약한 개체는 이중 사각형, 약한 개체와 강한 개체가 맺는 관계는 이중마름모로 표현
논리적 데이터 모델
- 개념적 구조를 데이터베이스에 저장할 형태로 표현한 논리적 구조
데이터베이스 논리적 구조 = 데이터베이스 스키마
관계 데이터 모델
- 일반적으로 많이 사용되는 논리적 데이터 모델
- 데이터베이스의 논리적 구조가 2차원 테이블 형태
계층 데이터 모델
- 논리적 구조가 트리 형태
네트워크 데이터 모델
- 논리적 구조가 그래프 형태
-> 구조가 복잡하고, 데이터 조작이 쉽지 않음.
릴레이션
관계 데이터 모델
- 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델
- 논리적 구조가 2차원 테이블의 형태
- 하나의 개체에 관한 데이터를 하나의 릴레이션에 저장
릴레이션
- 하나의 개체에 관한 데이터를 2차원 테이블 구조로 저장한 것
속성
- 릴레이션의 열
투플
- 릴레이션의 행
도메인
- 하나의 속성이 가질 수 있는 모든 값의 집합
- 속성 값을 입력 및 수정할 때 적합성 판단의 기준이 됨
- 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의
NULL
- 속성 값을 아직 모르거나 해당되는 값이 없음을 표현
차수
- 하나의 릴레이션에서 속성의 전체 개수
카디널리티
- 하나의 릴레이션에서 행(튜플)의 전체 갯수
릴레이션 스키마(릴레이션 내포)
- 릴레이션의 이름과 릴레이션에 포함된 모든 속성의 이름으로 정의하는 릴레이션의 논리적 구조
- 릴레이션 스키마는 데이터베이스 관리 시스템이 내부적으로 데이터 정의어를 이용해서 정의
- 릴레이션 스키마를 통해 릴레이션의 이름, 속성 및 전체 구조를 쉽게 파악 가능하다.
- 자주 변하지 않으며 정적이다.
릴레이션 인스턴스(릴레이션 외연)
- 어느 한 시점에 릴레이션에 존재하는 튜플들의 집합
- 릴레이션 인스턴스를 보면 현재 릴레이션의 실제 내용을 쉽게 파악할 수 있다.
- 튜플의 삽입, 삭제, 수정이 자주 발생하며 동적이다.
데이터베이스 스키마
- 릴레이션 스키마를 모아놓은 것으로, 데이터베이스의 전체 구조이다.
데이터베이스 인스턴스
- 데이터베이스를 구성하는 릴레이션 인스턴스의 모음이다.
릴레이션의 특징
- 2차원 테이블의 형태라고 모두 관계 데이터 모델의 릴레이션인 것은 아니다.
- 릴레이션으로 인정 받기 위해서는 4가지 특성을 모두 만족해야 한다.
튜플의 유일성
- 하나의 릴레이션에는 동일한 튜플이 존재할 수 없다.
- 모든 튜플에는 다른 튜플과 구별되는 유일한 특성이 있어야 한다.
튜플의 무순서
- 하나의 릴레이션에서 튜플 사이 순서는 무의미하다.
속성의 무순서
- 하나의 릴레이션에서 속성 사이 순서는 무의미하다.
속성의 원자성
- 속성 값으로 원자 값만 사용할 수 있다.
- 다중 값을 가질 수 없다.
데이터베이스의 키
키
- 릴레이션에 포함된 투플들을 유일하게 구별해주는 역할
- 관계 데이터 모델에서 중요한 제약 조건을 정의 및 투플을 처리하는 데 중요한 역할을 수행한다.
키의 종류
슈퍼키
- 유일성을 만족하는 속성 또는 속성들의 집합
- 유일성 : 키의 기본 조건 | 키로 지정된 속성 값은 투플마다 달라야 함을 의미한다.
후보키
- 유일성과 최소성을 만족하는 속성 또는 속성들의 집합
- 최소성 : 꼭 필요한 최소한의 속성들로만 키를 구성해야하는 특성
- 후보키가 되기 위해 만족해야 하는 유일성과 최소성의 특성은 새로운 투플이 삽입되거나 기존 투플의 속성 값이 바뀌어도 유지되어야 한다.
- 현재의 릴레이션 내용 (인스턴스)만 보고 유일성과 최소성을 판단해서는 안된다.
- 데이터베이스가 사용될 현실 세계의 환경까지 염두에 두고 속성의 본래 의미를 정확히 이해한 후 슈퍼키와 후보키를 선별해야 한다.
기본키
- 데이터베이스 설계자나 관리자가 여러 후보키 중에 기본적으로 사용할 키를 선택한 것
- 후보키가 여러 개일 경우 데이터베이스 사용환경을 고려하여 적합한 것을 기본키로 선택한다.
- 기본키 선택 고려 사항
1) 널 값을 가질 수 있는 속성이 포함된 후보키는 부적합
2) 값이 자주 변경될 수 있는 속성이 포함된 후보키는 부적합
3) 단순한 후보키 선택
대체키
- 기본키로 선택되지 못한 후보키
외래키
- 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합
- 릴레이션들 사이의 관계를 올바르게 표현하기 위해 필요
- 릴레이션 사이의 관계를 표현
- 참조하는 릴레이션 : 외래키를 가짐 | 참조되는 릴레이션 : 외래키가 참조하는 기본키를 가진 릴레이션
외래키의 조건 및 특성
- 외래키 속성과 그것이 참조하는 기본키 속성의 이름은 달라도 되지만 도메인은 같아야 함.
- 하나의 릴레이션에는 외래키가 여러개 존재할 수도 있고, 외래키를 기본키로 사용할 수도 있다.
- 같은 릴레이션 기본 키를 참조하는 외래키도 정의할 수 있다.
- 외래키 속성은 NULL을 가질 수도 있다.
관계 데이터 모델의 제약
- 관계 데이터 모델에서 정의하고 있는 기본 제약 사항은 키와 관련한 무결성 제약 조건
무결성 제약 조건
- 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙
무결성 제약 조건의 주요 목적
- 데이터베이스에 저장된 데이터의 무결성을 보장하고, 데이터베이스의 상태를 일관되게 유지하는 것
- 무결성 제약 조건은 데이터베이스가 어떤 상태나 시점에서도 무조건 지켜야하는 중요한 규칙이다.
무결성
- 데이터에 결함이 없는 상태, 즉 데이터가 정확하고 유효하게 유지된 상태
보안 VS 무결성
보안 : 권한이 없는 사용자로부터 데이터를 보호하는 것
무결성 : 권한이 있는 사용자의 잘못된 요구로부터 보호하는 것
무결성 제약 조건의 종류
1)개체 무결성 제약조건
- 기본키를 구성하는 모든 속성은 NULL을 가질 수 없다는 규칙
2)참조 무결성 제약조건
- 외래키는 참조할 수 없는 값을 가질 수 없다는 규칙
- 외래키 속성이 NULL을 가진다고 해서 참조 무결성 제약조건을 위반한 것은 아님 -> NULL은 참조 가능
관계 데이터 연산
관계 데이터 모델의 연산
- 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것
관계 대수
- 데이터의 처리 과정을 순서대로 기술
관계해석
- 처리를 원하는 데이터가 무엇인지만 기술
관계 데이터 연산 및 SQL은 학습지 참고
'웹 개발' 카테고리의 다른 글
빅데이터 분석 프로젝트 - 웹툰 장르 분석 (feat. 네이버웹툰, 카카오웹툰) (0) | 2023.12.08 |
---|---|
Django Simple JWT를 통한 Refresh / Access Token 발급 (1) | 2023.05.03 |