[파이썬] 데이터베이스 1
데이터베이스
- 주요개념
- 데이터
- 현실 세계에서 단순히 관찰하거나 측정하여 수집한 사실이나 값
- 정보
- 의사 결정에 유용하게 활용할 수 있도록 데이터를 처리한 결과물
- 정보 처리
- 데이터에서 정보를 추출하는 과정 또는 방법
- 정보 시스템
- 조직 운영에 필요한 데이터를 수집하여 저장해두었다가 필요할 때 유용한 정보를 만들어 주는 수단
- 데이터베이스
- 정보 시스템 안에서 데이터를 저장하고 있다가 필요할 때 제공하는 역할을 담당
- 데이터
데이터베이스의 정의 및 특징
특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합
실시간 접근
- 사용자의 데이터 요구에 실시간으로 응답
계속변화
- 데이터의 계속적인 삽입, 삭제, 수정을 통해 현재의 정확한 데이터를 유지
동시 공유
- 서로 다른 데이터의 동시 사용뿐만 아니라 같은 데이터의 동시 사용도 자원
내용기반 참조
- 데이터가 저장된 주소나 위치가 아닌 내용으로 참조
- 예) 재고량이 1,00개 이상인제품의 이름을 검색하시오.
데이터의 분류
- 정형 데이터
- 구조화된 데이터, 즉 미리 정해진 구조에 딸 ㅏ저장된 데이터
- 예) 엑셀의 스프레드시트, 데이터베이스의 테이블
- 반정형 데이터
- 구조에 따라 저장된 데이터이지만 데이터 내용 안에 구조에 대한 설명이 함께 존재
- 구조를 파악하는 파싱(parsing) 과정이 필요
- 예) HTML, XML, JSON 문서나 웹 로그, 센서 데이터
- 비정형 데이터
- 정해진 구조가 없이 저장된 데이터
- 예) 소셜 데이터의 텍스트, 영상, 이미지, 워드나 PDF 문서와 같은 멀티미디어 데이터
데이터베이스 관리시스템의 정의
- DBMS (Database Management System)
- 파일시스템의 문제를 해결하기 위해 제시된 소프트웨어
- 조직에 필요한 데이터를 데이터베이스에 통합하여 저장하고 관리함
- 예) 오라클, MySQL, MongoDB, ,,, 등등
데이터베이스 관리시스템의 발전과정
1세대 : 네트워크 DBMS(그래프 형태), 계층 DBMS(트리 형태)
2세대 : 관계 DBMS 데이터베이스를 테이블 형태로 구성 - 오라클, MS SQL서버, MySQL
3세대 : 객체지향 DBMS, 객체관계 DBMS
- 객체지향 DBMS : 객체를 이용해 데이터베이스를 구성 - 오투(O2), 온투스(ONTOS), 젬스톤(GemStone)
- 객체관계 DBMS : 객체 DBMS + 관계 DBMS
4세대 : NoSQL , NewSQL DBMS
- NoSQL DBMS : 비정형 데이터를 처리하는데 적합하고 확장성이 뛰어남 - MongoDB, Cassandra
- NewSQL DBMS : 관계DBMS의 장점 + NoSQL의 확장성 및 유연성 - 구글 스패너, NuoDB
데이터베이스 시스템의 정의
데이터베이스에 데이터를 저장하고,
이를 관리하여 조직에 필요한 정보를 생성해주는 시스템
데이터베이스의 용어
스키마(schema)
- 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것
- 인스턴스 (instance)
- 스키마에 따라 데이터베이스에 실제로 저장된 값
- 데이터 독립성 (data independency)
- 하위 스키마를 변경하더라도 상위 스키마가 영향을 받지 않는 특성
- 논리적 데이터 독립성 - 개념 스키마가 변경되어도 외부 스키마는 영향을 받지 않음
- 물리적 데이터 독립성 - 내부 스키마가 변경되어도 개념 스키마는 영향을 받지 않음
데이터 언어
- 데이터 정의어 ( DDL : Data Definition Language )
- 스키마를
정의
하거나, 수정 또는 삭제하기 위해 사용 - create table….
- 스키마를
- 데이터 조작어 ( DML : Data Manipulation Language )
- 데이터의
삽입 삭제 수정 검색
등의 처리를 요구하기 위해 사용 - 절차적 데이터 조작어와 비절차적 데이터 조작어로 구분
- insert // delete // update // select
CRUD
// Create, Read, Update, Delete
- 데이터의
- 데이터 제어어 ( DCL : Data Control Language )
- 내부적으로 필요한 규칙이나 기법을 정의하기 위해 사용
데이터 모델의 개념
- 데이터 모델링 (data modeling)
- 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정
- 데이터베이스 설계의 핵심 과정
- 2단계 데이터 모델링
- 개념적 데이터 모델링 (conceptual modeling)
- 현실 세계의 중요 데이터를 추출하여 개념 세계로 옮기는 작업
- 논리적 데이터 모델링 (logical modeling)
- 개념 세계의 데이터를 데이터베이스에 저장하는 구조로 표현하는 작업
- 개념적 데이터 모델링 (conceptual modeling)
데이터 모델 (data model)
데이터 모델링의 결과물을 표현하는 도구
- 개념적 데이터 모델
- 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구
- 예) 개체-관계 모델 ( ER ) ER 다이어그램
- 논리적 데이터 모델
- 개념적 구조를 논리적 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구
- 예) 관계 데이터 모델
개체-관계 모델
- 개체-관계 모델 (E-R model : Entity - Relationship model)
- 개체와 개체 간의 관계를 이용해 현실 세계의 개념적 구조로 표현
- 핵심 요소 : 개체, 속성, 관계
- 개체-관계 다이어그램(E-R diagram)
- E-R 다이어그램
- 개체 - 관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현한 것
- 개체 (entity)
- 현실 세계에서 조직을 운영하는 데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것 ( object )
- 저장할 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물, 개념, 사건 등
- 속성 (attribute)
- 개체나 관계가 가지고 있는 고유의 특성
- 의미 있는 데이터의 가장 작은 논리적 단위
- 개체 타입 (entity type)
- 개체를 고유의 이름과 속성들로 정의한 것
- 파일 구조의 레코드 타입(record type)에 대응됨
- 개체 인스턴스 (entity instance)
- 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체
- 개체 어커런스 라고도 함
- 파일 구조의 레코드 인스턴스에 대응됨
- 개체 집합 (entity set)
- 특정 개체 타입에 대한 개체 인스턴스들을 모아놓은 것
속성의 분류
- 단일 값 속성과 다중값 속성
- 단일 값 속성
- 다중 값 속성
- 단순 속성과 복합 속성
- 단순속성
- 복합 속성
- 유도 속성
- 기존의 다른 속성의 값에서 유도되어 결정되는 속성
- 널 속성 (null attribute)
- 널 값이 허용되는 속성
- 키 속성(key attribute)
- 각 개체 인스턴스를 식별하는 데 사용되는 속성
- private key 로 많이씀
관계 (relationship)
- 개체와 개체가 맺고 있는 의미 있는 연관성
- 개체 집합들 사이에 대응 관계, 즉 매핑(mapping)을 의미
- 관계의 유형 : 관계에 참여하는 개체 타입의 수 기준
- 이항 관계 / 삼항 관계 / 순환 관계
- 관계의 유형 : 매핑 카디널리티 기준
- 일대일 (1:1) 관계 / 일대다 (1:n) 관계 / 다대다(n:m) 관계
논리적 데이터 모델
- 논리적 데이터 모델의 개념
- E-R 다이어그램으로 표현된 개념적 구조를 데이터베이스에 저장할 형태로 표현한 논리적 구조
- 관계 데이터 모델
- 일반적으로 많이 사용되는 논리적 데이터 모델 - 데이터베이스의 논리적 구조
- 계층 데이터 모델 (hierarchical data model)
- 데이터베이스의 논리적 구조가 트리(tree) 형태임
- 루트 역할을 하는 개체가 존재하고 사이클이 존재하지 않음
- 네트워크 데이터 모델 (network data model)
- 데이터베이스의 논리적 구조가 네트워크, 즉 그래프 형태임
관계 데이터 모델의 기본 용어
- 릴레이션
- 하나의 개체에 관한 데이터를 2차원 테이블 구조로 저장한 것
- 속성
- 렐리에션의 열, 어트리뷰트
- 튜플
- 릴레이션의 행
- 도메인
- 하나의 속성이 가질 수 있는 모든 값의 집합, 속성 값을 입력 및 수정할 때 판단의 기준이 되고, 일반적으로 속성의 특성을 고려한 데이터
- 널(null)
- 속성 값을 아직 모르거나 해당되는 값이 없음을 표현
- 차수
- 하나의 릴레이션에서 속성의 전체 개수
- 열의 개수 ( 속성 개수 )
- 카디널리티
- 하나의 릴레이션에서 튜플의 전체 개수
데이터베이스의 구성
- 데이터베이스 스키마
- 데이터베이스의 전체 구조
- 데이터베이스를 구성하는 릴레이션 스키마의 모음
- 데이터베이스 인스턴스(database instance)
- 데이터베이스를 구성하는 릴레이션 인스턴스의 모음
키 (key)
- 릴레이션에서 튜플들을 유일하게 구별하는 속성 또는 속성들의 집합
- 키의 특성
- 유일성 : 하나의 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야함
- 최소성 : 꼭 필요한 최소한의 속성들로만 키를 구성함
- 키의 종류
- 슈퍼키 (super key) 유일성을 만족하는 속성 또는 속성들의 집합, 고객아이디, 고객이름 등
- 후보키(candidate key) - 유일성과 최소성을 만족하는 속성 또는 속성들의 집합, 고객아이디 등
- 기본키(primary key) - 후보키 중에서 기본적으로 사용하기 위해 선택한 키, 고객아이디
- 대체키 - 기본키로 선택되지 못한 후보키
- 외래키 - 다른 릴레이션의 기본키를 참조하는 속성
제약조건
- 무결성 제약조건
- 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙
- 무결성 : 데이터를 결함이 없는 상태, 즉 정확하고 유효하게 유지하는 것
- 개체 무결성 제약조건
- 기본키를 구성하는 모든 속성은 널 값을 가질 수 없는 규칙
- 참조 무결성 제약조건
- 외래키는 참조할 수 없는 값을 가질 수 없는 규칙
SQL의 분류
- 데이터 정의어(DDL)
- 테이블을 생성하고 변경, 제거하는 기능을 제공
- 데이터 조작어(DML)
- 테이블에 새 데이터를 삽입하거나, 테이블에 저장된 데이터를 수정, 삭제, 검색하는 기능을 제공
- 데이터 제어어(DCL)
- 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능을 제공
- SQL 의 데이터 정의 기능 : 테이블 생성, 변경, 삭제
- 테이블 생성 : Create table 문
- 테이블 변경 : Alter table 문
- 테이블 삭제 : Drop table 문
- SQL 의 데이터 조작 기능 : 데이터 검색, 새로운 데이터 삽입, 데이터 수정, 데이터 삭제
- 데이터 검색 : Select 문
- 데이터 삽입 : Insert 문
- 데이터 삭제 : Delete 문
- 데이터 수정 : Update 문
뷰
- 뷰는 기본 테이블을 들여다 볼 수 있는 창의 역할을 담당
- 뷰 활용 : Select 문
- 뷰 활용 : Insert, Update, Delete 문
- 뷰의 장점
- 질의문을 좀 더 쉽게 작성할 수 있음
- 데이터의 보안 유지에 도움이 됨
- 데이터를 좀 더 편리하게 관리할 수 있음
데이터베이스 설계단계
- 1단계
- 요구사항 분석
- 데이터베이스의 용도 파악
- 결과물 : 요구 사항 명세서
- 요구사항 분석
- 2단계
- 개념적 설계
- DBMS에 독립적인 개념적 구조 설계
- 결과물 : 개념적 스키마 (E-R 다이어그램)
- 개념적 설계
- 3단계
- 논리적 설계
- DBMS에 적합한 논리적 구조 설계
- 결과물 : 논리적 스키마 (릴레이션 스키마)
- 논리적 설계
- 4단계
- 물리적 설계
- DBMS로 구현 가능한 물리적 구조 설계
- 결과물 : 물리적 스키마
- 물리적 설계
- 5단계
- 구현
- SQL문을 작성한 후 이를 DBMS에서 실행하여 데이터베이스 생성
- 구현
정규화의 개념과 이상 현상
- 이상(anomaly) 현상
- 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입 수정 삭제 ㅇ녓나을 수행할 때 발생할수 있는 부작용
- 삽입 이상
- 갱신 이상
- 삭제 이상
- 정규화
- 이상 현상을 제거하면서 데이터베이스를 올바르게 설계해 나가는 과정
- 이상 현상이 발생하지 않도록, 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해 (decomposition)하는 과정
- 함수적 종속성을 판단하여 정규화를 수행함
- 함수적 종속성 (FD : Functional Dependency)
- 속성들 간의 관련성
- 함수 종속성을 이용하여, 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해하여 이상 현상이 발생하지 않는 바람직한 릴레이션으로 만들어 나가는 과정