데이터
•
어떤 형태로든 저장되고 분석될 수 있는 정보를 의미
•
정보의 기초 단위
•
종류
◦
정형 데이터
◦
비정형 데이터
◦
반정형 데이터
•
스키마(Schema) : 데이터의 구조와 제약 조건에 대한 것들을 정의한 것
정형 데이터(Structured Data)
•
고정된 필드(스키마를 철저히 따른)에 저장된 데이터
•
SQL 등의 질의 언어를 사용하여 쉽게 검색하고 분석 가능
•
ex) 관계형 데이터베이스, 스프레드시트(엑셀) 등
•
머신러닝
반정형 데이터(Semi-Structured Data)
•
고정된 필드에 저장되어 있지는 않지만, 메타데이터나 스키마 등을 포함하는 데이터
•
구조화된 데이터를 포함하고 있지만, 유연성이 더 큼
•
ex) XML, HTML, JSON, 이메일 등
비정형 데이터(Unstructured Data)
•
고정된 필드에 저장되어 있지 않은 데이터
•
분석이 어렵지만, 텍스트 마이닝, 이미지 인식 등 비정형 데이터 분석 기술이 발전
•
ex) 텍스트, 이미지, 동영상, 음성 데이터 등
•
딥러닝
데이터 베이스
•
데이터의 집합
•
데이터를 조직적으로 저장하고 관리하기 위한 시스템
•
데이터의 저장, 검색, 업데이트, 삭제 등을 효율적으로 처리할 수 있도록 설계됨
데이터 베이스 주요 개념
•
데이터베이스 (Database): 관련된 데이터를 체계적으로 모아 놓은 집합체.
•
데이터베이스 관리 시스템 (DBMS: Database Management System): 데이터베이스를 생성, 관리, 제어하는 소프트웨어 시스템.
•
스키마 (Schema): 데이터베이스의 구조를 정의하는 청사진. 테이블, 뷰, 인덱스, 제약 조건 등을 포함.
•
테이블 (Table): 행(레코드)과 열(필드)로 구성된 데이터 저장 구조.
•
필드 (Field): 테이블의 열, 데이터의 속성 또는 컬럼.
•
레코드 (Record): 테이블의 행, 하나의 데이터 항목 단위.
데이터베이스의 특징
•
실시간 접근성(real time accessibility) : 사용자의 질의에 대하여 즉시 처리하여 응답
•
계속적인 진화(continuous evolution) : 삽입, 삭제, 갱신을 통하여 항상 최근의 정확한 데이터를 동적으로 유지
•
동시 공유(concurrent sharing) : 여러 사용자가 동시에 원하는 데이터를 공유할 수 있는 특징 소유
•
내용에 의한 참조(content reference) : 데이터베이스에 있는 데이터를 참조할 때 튜플(tuple)의 주소나 위치가 아닌 사용자가 요구하는 데이터 내용에 따라 참조
•
데이터 논리적 독립성(independence) : 응용프로그램과 데이터베이스를 독립시킴으로써 데이터 논리적 구조를 변경시키더라도 응용프로그램은 변경 불가
데이터베이스 정규화
•
데이터 베이스 설계에서 데이터의 중복을 최소화하게 데이터를 구조화 하는 프로세스
•
목표는이상이 있는 관계를 재구성해서 작고 잘 조직된 관계를 생성하는 것
정규화 목적
•
불필요한 데이터를 제거하고, 데이터의 중복을 최소화 함으로 써 저장공간이나, 자원을 효율적으로 사용하기 위함
•
삽입/갱신/삭제 시 발생할 수 있는 이상 현상을 방지하기 위함
정규화 과정
•
보통 1NF ~ 3NF까지 진행 + BCNF 단계까지
◦
1NF : 모든 *도*메인이 원자 값으로만 구성
◦
2NF : 기본키가 아닌 속성이 기본키에 대한 완전 함수적 종속을 만족, *부*분적 함수 종속을 제거한 정규형
◦
3NF : 기본키가 아닌 모든 속성이 기본키에 대해 *이*행적 함수 종속 관계를 만족하지 않는 정규형
◦
BCNF : 모든 *결*정자가 후보키인 정규형, 종속성 보존X
◦
4NF : *다*치 종속이 성립하는 경우, R의 모든 속성이 A에 함수적 종속 관계를 만족
◦
5NF : 모든 *조*인 종속이 R의 후보키를 통해서만 성립되는 정규형
2NF → 3NF : 정규화 과정에서 함수 종속이 A→B 이고 B→C 일 때 A→C인 관계를 제거하는 단계
1NF(제1정규형)
•
테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 테이블을 분해하는 것
2NF (제2정규형)
•
제2 정규화란 제1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것
완전 함수 종속 : 기본키의 부분집합이 결정자가 되어선 안된다
◦
해당 테이블에서 기본키는 (학생번호, 강좌이름)으로 복합키이다.
복합키 : 두 개 이상의 열(columns)을 결합하여 유일한 식별자를 구성하는 키
그리고 (학생번호, 강좌이름)인 기본키는 성적을 결정
(학생번호, 강좌이름) --> (성적)
◦
그런데 여기서 강의실이라는 컬럼은 기본키의 부분집합인 강좌이름에 의해 결정될 수 있다.
(강좌이름) --> (강의실)
3NF (제3정규형)
•
제2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것
•
여기서 이행적 종속이라는 것은 A -> B, B -> C가 성립할 때 A -> C가 성립되는 것을 의미한다. 예를 들어 아래와 같은 계절 학기 테이블을 살펴보자.
•
기존의 테이블에서 학생 번호는 강좌 이름을 결정하고 있고, 강좌 이름은 수강료를 결정하고 있다. 그렇기 때문에 이를 (학생 번호, 강좌 이름) 테이블과 (강좌 이름, 수강료) 테이블로 분해해야 한다.
데이터베이스 관리 시스템 (DBMS: DataBase Management System)
•
데이터 베이스를 조작하는 별도의 소프트웨어
•
DBMS를 통해 데이터베이스를 관리하여 응용 프로그램들이 데이터베이스를 공유하고, 사용할 수 있는 환경을 제공
DBMS의 기능
•
정의 : 데이터에 대한 형식, 구조, 제약조건들을 명세하는 기능이다.
•
구축 : DBMS가 관리하는 기억 장치에 데이터를 저장하는 기능이다.
•
조작 : 특정한 데이터를 검색하기 위한 질의, 데이터베이스의 갱신, 보고서 생성 기능 등을 포함한다.
•
공유 : 여러 사용자와 프로그램이 데이터베이스에 동시에 접근하도록 하는 기능이다.
•
보호 : 하드웨어나 소프트웨어의 오작동 또는 권한이 없는 악의적인 접근으로부터 시스템을 보호한다.
•
유지보수 : 시간이 지남에 따라 변화하는 요구사항을 반영할 수 있도록 하는 기능이다.
DBMS 유형
관계형 데이터베이스 관리 시스템(RDBMS: Relational DBMS)
•
는 RDB(관계형 데이터베이스)를 관리하는 시스템
•
RDB : 테이블, 행, 열의 정보를 구조화하는 방식
•
테이블을 조인하여 정보간 관계 또는 링크를 설정할 수 있는 기능이 있어, 여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있음.
•
모든 데이터를 2차원 테이블 형태로 표현
•
외래 키를 이용한 테이블 간 Join 가능
•
RDBMS 종류
◦
Oracle, MySQL, PostgreSQL 등
비관계형 데이터베이스(NoSQL DBMS)
•
관계형 데이터 모델을 지양하며 대향의 분산된 데이터를 저장하고 조회하는데 특화되었으며 스키마 없이 사용 가능하거나 느슨한 스키마를 제공하는 저장소
•
데이터 테이블이 하나로 이루어져 있어서 테이블 간의 관계를 정의하지 않아 Join이 불가
•
NoSQL DBMS 종류
◦
MongoDB, Hbase, DynamoDB 등
데이터 모델링
•
정보시스템 구축의 대상이 되는 업무 내용을 분석하여 이해하고 약속된 표기법에 의해 표현하는걸 의미
•
분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터 관리에 사용
•
데이터를 추상화한 데이터 모델은 데이터베이스의 골격을 이해하고 그 이해를 바탕으로 SQL문장을 기능과 성능적인 측면에서 효율적으로 작성 가능
데이터 모델링 순서
1.
업무 파악(요구사항 수집 및 분석)
a.
어떠한 업무를 데이터화하여 모델링 할 것인지에 대한 요구사항 수집
b.
수집한 요구사항들을 바탕으로 분석 진행
2.
개념적 데이터 모델링(ERD: ER 다이어그램 작성)
•
Entity를 도출하고 ERD를 작성하는 단계
3.
논리적 데이터 모델링
•
논리적 모델링은 ERD를 사용할 특정 DBMS의 논리적 자료구조에 맞게 사상하는 과정
•
예를들어 RDBMS를 사용한다고 하면, ERD를 RDB로 사상
•
테이블 설계와 정규화도 여기서
4.
물리적 데이터 모델링
•
최종적으로 데이터를 관리할 데이터베이스(MySQL, Oracle 등등)를 선택하고, 선택한 데이터 베이스에 실제 테이블을 만드는 작업
개념적 데이터 모델
•
E-R 모델
◦
개체 - 관계 모델
◦
E-R 다이어그램 : E-R모델을 그래프 방식으로 표현 한 것
논리적 데이터 모델
•
필드로 기술된 데이터 타입과 이 데이터 타입 간의 관계, 현실 세계를 표현하는 방법
•
종류
◦
관계형 데이터 모델 : DB를 테이블 집합으로 표현
◦
계층형 데이터 모델 : DB를 트리 구조로 표현
◦
네트워크형 데이터 모델 : DB를 그래프 구조로 표현(오너-멤버 관계O)
개체-관계 다이어그램(ERD: Entity-Relation Diagram)
•
Entity (개체)란
◦
현실에 존재하는 개별적으로 식별할 수 있는 물리적 또는 추상적인 개체를 의미
◦
각 Entity 는 특징을 나타낼 수 있는 Attribute (속성) 들을 가짐
◦
예를 들어 ‘학생’ 이라는 Entity 는 ‘학번’, ‘학생 이름’ 등의 Attribute 를 가질 수 있고, ‘수업’ 이라는 Entity 는 ‘학수번호’, ‘수업 이름’ 등의 Attribute 를 가짐
•
ER(개체-관계) 모델은
◦
Entity 사이의 Relation (관계) 을 통해 현실 세계를 표현하기 위한 설계 방식
◦
예를 들어 ‘학생’ 과 ‘수업’ Entity 끼리는 ‘수강하다’ 라는 관계를 맺을 수 있음.
ERD 표기법
•
Entity
◦
엔티티는 정의 가능한 사물 또는 개념을 의미
◦
== 데이터베이스의 테이블
•
Attribute:
◦
엔티티에는 개체가 갖고있는 속성(Attribute)을 포함
◦
== 데이터베이스의 테이블의 각 필드(컬럼)들
•
주 식별자(PK: Primary Key)
◦
데이터베이스 테이블의 Primary Key를 표현
◦
중복이 없고 NULL 값이 없는 유일한 값에 지정하는 식별자
•
외래 식별자(FK: Foreign Key)
◦
데이터베이스 테이블의 Foreign Key를 표현
◦
외래 식별자를 표시할 때에는 선을 이어주는데 개체와 관계를 따져 표시
•
Domain
◦
도메인은 속성의 값, 타입, 제약사항 등에 대한 갑의 범위를 표현하는 것
◦
이때 데이터 타입을 명시할때, 데이터베이스가 지원하는 타입과 동일해야 함
•
Relation
◦
부모 자식 관계에서 자식이 부모의 주 식별자를 외래 식별자로 참조해서 자신의 주 식별자로 설정
◦
부모 자식 관계에서 자식이 부모의 주 식별자를 외래 식별자로 참조해서 일반 속성으로 사용.
•
대응수(Mapping Cardinality)
◦
특정 Entity 가 상대 Entity 와 관계를 몇 회 맺을 수 있는지를 표시
▪
학생과 학급의 소속 관계를 살펴보자. 한 학급에는 여러 학생이 소속될 수 있지만, 한 학생이 여러 학급에 소속될 수는 없다. 이때, 학생과 학급의 Cardinality 는 N:1 이다.
▪
이번에는 학생과 학생의 짝꿍 관계를 살펴보자. 한 학생이 다른 학생과 짝꿍관계를 맺을 수 있는 관계의 경우의 수는 서로 1회밖에 없다. 따라서 이 관계의 Cardinality 는 1:1 이다.
▪
마지막으로 학생과 동아리간의 소속 관계를 살펴보자. 하나의 학생은 여러 동아리에 소속될 수 있다. 하나의 동아리 또한 여러 학생을 소속시킬 수 있다. 따라서 이 관계의 Cardinality 는 N:N 이다.
ERD 테이블 항목 (ERD Cloud)
•
논리 테이블명 : 테이블명에 대한 설명 (한글)
•
물리 테이블명 : 실제 테이블명 (영문)
•
논리 필드명 : 필드명에 대한 설명 (한글)
•
물리 필드명 : 실제 필드명 (영문)
•
도메인 : 필드명에 대한 주제를 적는 곳 (이것도 일종의 코멘트와 같다)
•
타입 : int, varchar, date 필드 타입을 써주는 곳
•
NULL 유무 : NULL / NOT NULL 중에 하나
•
기본값 : default 값을 써주는 곳
•
코멘트 : 말 그대로 부가설명이 필요할 경우 써주는 곳
ERD 관계
•
관계 표현
카디널리티 : 특정 칼럼의 중복 수치 (상대적)
중복도가 ‘낮으면’ 카디널리티가 ‘높다’고 표현
중복도가 ‘높으면’ 카디널리티가 ‘낮다’고 표현
•
관계 맺기
◦
One(1:1 관계) : 부모는 하나의 자식이 있다.
◦
Many(1:N 관계) : 부모는 하나 이상의 자식이 있다.
◦
Zero or One(1:1(0) 관계) : 부모는 하나의 자식이 있을 수도 있다. (없을 수도 있다.)
◦
Zero or One or May(1:N(0) 관계) : 부모는 여러개의 자식이 있을 수도 있다. (없을 수도 있다.)