본문 바로가기
코딩 어쩌구/Data

<고객DB분석>

by annmunju 2020. 11. 24.

 1 데이터베이스

 

1. 파일처리 방식

1.1 파일처리 방식의 개념

1.2 파일처리 방식의 문제점 : 데이터 중복, 표준화된 관리 불가능, 유연성 부족으로 통합된 정보취득 어려움, 응용프로그램 관리와 개발 부담

 

2. 데이터베이스 방식

2.1 데이터베이스 방식의 개념

2.2 데이터베이스 방식의 이점 : 효율적인 데이터 접근, 관리 효율적, 무결성 보장, 독립성 보장, 동시 접근과 손상복구, 개발시간 단축

2.3 데이터베이스의 구성 : 하드웨어, 소프트웨어, 사용자(데이터 관리자, 데이터베이스 관리자, 애플리케이션 관리자, 최종 사용자), 데이터, 메타데이터(속성 기술 데이터)

 

3. 데이터 모델 : 한눈에 구조 쉽게 보여주기 위한 모형

3.1 데이터 모델의 분류

 1) 상위 데이터 모델 : 개체관계성도 (개체, 관계성, 속성으로 구분해 표현)

 2) 실행 데이터 모델 : 상위를 바탕으로 보다 구체적으로 표현

 3) 하위 데이터 모델 : 저장되는 방법, 형태 등에 대한 명세

3.2 스키마 : 데이터 정보를 표현한 논리적 구조, 데이터베이스에 존재하는 모든 자료의 내용, 특징, 정보를 포함한다.

 1) 외부단계 (외부 스키마) : 상위 or 실행 데이터 모델로 표현됨. 사용자 관점 (전체 데이터베이스에서 사용자가 원하는 일부분만 추출)

 2) 개념단계 (개념적 스키마) : 상위 or 실행 데이터 모델로 표현됨. 전체 데이터베이스의 논리적 구조를 하나의 개념적 스키마로 기술 (DB 관리자만 접근 가능)

 3) 내부단계 (내부 스키마) :  하위 데이터 모델로 표현됨. 물리적 저장구조, 하드디스크  저장 위치 정보

 

 2 개체관계성 모델

 

1. 개체관계성 모델 : 개체와 관계성을 이용해 기업데이터를 구체적으로 설계. 개체관계성도를 이용해 도식화

 

2. 개체 : DB에서 표현하고자 하는 유무형의 대상

2.1 개체의 개념 : [고객 (개체)  - 고객번호, 고객성명, 고객주소, 고객나이  (속성)] = 개체집합 , [고객1 - 1006, 안뭉도, 서울시 성동구, 24 ] = 개체 인스턴스

2.2 속성의 개념 : 식별자속성, 합성식별자속성, 유도속성, 단일값속성, 다중값속성, 원자속성, 합성속성, 공값속성, 필수:선택속성

2.3 종속개체집합의 개념 : [직원: 직원id, 직원이름, 성별]-<[부양가족: 부양가족 이름, 나이] : 식별관계성집합

 

3. 관계성 : 개체간의 관계

3.1 관계성의 성질

 1) 대응비(1:1, 1:, :)

 2) 참여도(완전참여, 부분참여 : 관계성 맺고있는 상대 개체 집합과 얼만큼 연관되어 있는지 표현)

 3) 차수(일원관계성집합, 이원관계성집합, 삼원관계성집합)

 4) 사상수 제약(연결될  있는 개수 : 최소사상수 0 또는 1)

 5) 결합 개체 : 하나 이상의 속성을 가지는 관계성집합을 개체집합으로 변환

 

4. 개체관계성 모델의 확장

4.1 일반화(유전성) 상세화

4.2 개체관계성 모델의 기타 확장 성질 :

 1) 완전성 : 완전참여와 부분참여(추가적으로 참여할  있음)

 2) 배타성 : 배타적과 비배타적(중복된 성질 일부 있음)

 

5. 개체관계성도

 

제 3장 관계형 모델

 

 1. 관계형 모델 : 실행 데이터 모델 표현 (하위DM 생략)

1.1 특징 : 가장 많이 사용되는 데이터 모델, 테이블 형태로 저장돼 직관적 이해 가능, SQL 질의어 사용(조작 가능), 데이터 중복 배제(조인 연산에 오버헤드 발생 가능)

1.2 구성요소 : 데이터 구조, 데이터 조작, 데이터 무결성

 

 2. 관계

2.1 관계의 개념 : 필드(속성) 열로, 이에 해당하는 레코드(인스턴스) (한줄=튜플)으로 저장해 관리

2.2 관계의 특성 : 관계와 속성은 고유의 이름을 가진다. 하나의 관계  모든 튜플은 유일하다. 열과  순서 무의미하다. 다중값 속성은 존재할  없다.

2.3 관계의 추가 개념 : [원소수 = 속성수], [차수 = 튜플 ]

2.4 관계 스키마 : 관계형 데이터베이스에 존재하는 관계를 표현하기 위함

 ) 고객(고객번호, 고객명, 고객주소, 고객전화, 고객등급) -<

주문(고객번호, 상품코드, 주문일자, 주문금액, 주문조건) >-

상품(상품코드, 상품명, 상품내역, 상품단가, 재고량)

2.5 영역 : 속성들의 허용 가능한 속성 값에 대한 명세

 

 3. 무결성

3.1 무결성 제약 : 관계형 모델에 저장되는 모든 데이터들이 반드시 지켜야할 규칙. 일관성, 정확성 유지 신뢰성 보장. 데이터 연산  발생 가능한 여러 오류 방지

 1) 보장 방법 (1) 명시적 제약 : 응용 프로그램 단위에서 무결성 검증 코드를 통한 보장, (2) 내제적 제약 : 데이터 베이스 내의 제약 조건 설정을 통한 보장, (3) 본질적 제약 : 데이터 모델의 기본 가정으로 구조적 특성으로 인한 제약

 2) 무결성의 종류 (1) 트랜잭션 무결성 : 하나의 작업 단위  데이터 연산들이 정상적으로 처리되어 작업결과의 정확성, 데이터의 일관성을 보장

  (2) 데이터 무결성 : 개체 무결성(모든 관계 주키 소유), 영역 무결성(하나의 속성에 해당하는 모든 인스턴스들의 속성값 형태 동일), 참조 무결성(데이터  상호관계에서 데이터 무결성 파악, 연관된 관계에 일관성 보증)

3.2 개체 무결성 제약 : 주키는 null값을 가지지 않는다. 유일성과 최소성을 만족해야 한다.

3.3 영역제약 : 데이터 유형이나 길이 범위에 대해 제약을 받음.

3.4 참조 무결성 제약 : 외래키를 통해 연관성을 정의. 하나의 관계에 외래키가 있다면 그건 다른 관계의 주키 값과 일치하거나 null 값이여야 .

 1) 단순 참조 무결성 제약 : 외부키 제약, 교차참조키 제약

 2) 갱신 참조 무결성 제약 : 입력, 삭제, 수정 시 제약 : 주키 먼저 조정하기

 

 4 정규화

 

 1. 정규화

1.1 정규화의 배경 : 관계형 모델의 조인으로 인한 입력,삭제,수정의 단점을 극복하기 위해 등장.

1.2 정규화의 개념 : 비구조적 관계(중복성 있으며 이상현상 발생) -> 구조적 단계(중복 X, 이상 X)

 목적) 데이터 중복성 최소화, 이상현상 발생 회피, 참조 무결성 제약을 단순화, 향후 데이터 확장에 대한 기반

1.3 데이터의 이상 현상 : 입력 이상, 삭제 이상, 수정 이상

 

 2. 정규형 전환

2.1 함수적 종속의 개념 : X=>Y, :1, 직원ID => (이름, 성별)

2.2 정규형 전환

 1) 0 정규형 (다중값 속성을 가지는 관계) -> 다중값 제거, 원자성 제거, 유일성과 최소성을 만족시키는 주키 선정 ->

 2) 1 정규형 (입력/삭제/수정 이상 존재) -> 부분 종속을 제거하고 모든 속성이 주키에 완전히 종속되도록 관계를 분리, 새로운 관계로 분리(테이블 분리) ->

 3) 2 정규형 (각각의 테이블 혹은 하나의 테이블에서 주키 아닌 모든 속성들이 주키 속성에 함수적으로 종속) -> 전이적 종속(하나의 관계 안에서 2 이상의 키가 아닌 속성들 간에 함수적 종속)이 없도록 만들기 ->

 4) 3 정규형 ( 관계를 연결하기 위한 외래키 역할로 속성을 남겨둠. )

 

 3. 정규화 주의사항 : 이상 현상 발생 확률 감소와 동시에 DB 실행 성능을 저하(많은 조인연산으로)시킬  있음. 지나친 참조 무결성을 야기. 목적에 따라 데이터의 중복을 허용하는 역정규화를 허용할  있음.

 

 5 데이터베이스 설계

 

 1. 정보시스템 설계 방법론 : 기업이 보유한 자원(사람, 데이터, 프로세스, 네트워크, 이벤트, 동기=규칙)으로부터 유의미한 정보를 얻기 위한 시스템.

 1) 폭포수 모델 : 순차적. 아래로 떨어지는 모형. 직관적이고 작은단위에 유용. / 이전 단계 못돌아감. 불확실성. 요구사항 자주 바뀌는 프로젝트에는 부적합

 2) 프로토타이핑 모델 : 기본형을 바탕으로 개선해나가며 개발. 초기 개발 비용 감소. 주기적으로 사용자 요구사항 반영. / 최종 시스템이 초기에 목적한 시스템과 다를  있음. 기반 구조에 대한 이해가 결여된 상태로 개발 이뤄질  있음

 3) 나선형 모델 : 프로토타이핑 모델에서 초기 요구 분석  프로토타입 개발 전에 위험 분석 단계 수행. 위험 요소 대비 가능. 주기적으로 사용자 요구사항 반영. / 위험분석 전문가 필요. 반복횟수 증가로 비용 증가

 4) 점증적 모델 : 초기버전 배포  다음버전 개발하며 배포. 증분형 모델(서브시스템 하나씩 구현) 진화형 모델(프로토타입 개발 기능 추가 방식)으로 나뉨

 5) 고속개발 모델 : 자동화 이용. 양질의 시스템 개발과 위험 제어에 강점. / 개발 과정 전반에 사용자 참여로 개발 어려움 유발. 대단위 시스템에 적합하지 않음

 

 2. 데이터베이스 설계 방법론

2.1 데이터베이스 설계 주요 단계 : 요구사항 분석 -> 설계 -> 개발 -> 운영  유지보수

2.2 데이터베이스 설계  : 데이터베이스 사용자 파악, 데이터베이스 범위 결정, 데이터 요구사항 파악, 데이터 수집

2.3 데이터베이스 설계 : 3-스키마 구조를 이용해 구현. 외부단계 : 개념적 데이터베이스 설계 / 개념단계 : 논리적 데이터베이스 설계 / 내부단계 : 물리적 데이터베이스 설계

2.4 데이터베이스 설계 

 1) 데이터베이스 구축 : 데이터 정의어 이용해 구조 정의. 데이터 조작어 이용해 데이터 탑재. 기존 데이터베이스를 데이터 마이그레이션 기법을 이용해 이전.

 2) 데이터베이스 운영 : 지속적 유지보수 노력

 

 6 SQL 개념

 

 1. 데이터베이스 질의어 : 질의란 사용자가 DBMS 통해 DB 저장된 데이터에 대한 조회, 수정과 같은 일련의 데이터 처리를 요청하는 것을 말한다.

 1) 관계형 질의어 : 관계형 데이터베이스에서 사용하는 질의어.

  (1) 형식적 질의어 : 개념적 질의어. 상업적 질의어의 유용성 검증 : 관계형 대수 관계형 해석  (2) 상업적 질의어 : SQL

 2) 관계형 대수

  (1) 일반 집합 연산자 : 합집합, 차집합, 교집합, 카티션 프로덕트(R1 X R2)

  (2) 순수 관계 연산자

   -1- 셀렉트 : 조건식(관계), 비교연산자(<,>,=) 논리 연산자(,)

   -2- 프로젝트 : π속성리스트(관계)

   -3- 조인 : 자연조인(), 새타조인, 세미조인, 외부조인

   -4- 디비전

  (3) 복합 질의

 

 2. SQL 언어 : SQL 문법에 맞게 질의어 작성하면 세부 수행 과정 처리해줘서 원하는 데이터 연산에 집중, 대화식과 내장식으로 분류.

 1) 데이터 정의어 : 스키마 생성/삭제, 관계 정의/수정/삭제,  생성/삭제  데이터 구조에 대한 언어

 2) 데이터 조작어 : 데이터 (튜플) 삽입/삭제/수정  데이터 처리 연산 기능

 3) 데이터 제어어 : 접근, 사용 권한 부여, 트랜잭션 실행/취소 

 

 

 

 

* 실습 *

 1) 데이터 정의어

 - 데이터베이스 생성 : CREATE DATABASE (IF NOT EXISTS) DB_NAME;

 - 데이터베이스 삭제 : DROP DATABASE (IF EXISTS) DB_NAME;

 - 테이블(관계) 생성 : CREATE TABLE (IF NOT EXISTS) DB_NAME.Table_NAME (

Column_Name1 Data_Type(Size) [NULL | Not NULL],

Column_Name2 Data_Type(Size) [NULL | Not NULL], ...

 - 참조 무결성 제약 조건 : 테이블 생성절에 적용

= ON DELETE (UPDATE) NO ACTION : 외래 키가 참조하는 키가 있는 행을 삭제하려고 할때 한줄만

= ON DELETE (UPDATE) CASCADE : 외래 키가 참조하는 키가 있는 행을 삭제할  모든  삭제

 - 테이블(관계) 삭제 : DROP TABLE (IF EXISTS) DB_NAME.Table_NAME RESTRICT(참조하는 관계가 있을  수행하지 않는다)/CASCADE(참조하는 관계 까지  지워버린다);

 

 2) DML (레코드 기본 검색 : Select)

       Select <항목명 / 항목명 AS 별명>

From <관계명>

[Where <조건식>];

 3) 데이터 정의어

 - 데이터베이스 생성 : CREATE DATABASE (IF NOT EXISTS) DB_NAME;

 - 데이터베이스 삭제 : DROP DATABASE (IF EXISTS) DB_NAME;

 - 테이블(관계) 생성 : CREATE TABLE (IF NOT EXISTS) DB_NAME.Table_NAME (

Column_Name1 Data_Type(Size) [NULL | Not NULL],

Column_Name2 Data_Type(Size) [NULL | Not NULL], ...

 - 참조 무결성 제약 조건 : 테이블 생성절에 적용

= ON DELETE (UPDATE) NO ACTION : 외래 키가 참조하는 키가 있는 행을 삭제하려고 할때 한줄만

= ON DELETE (UPDATE) CASCADE : 외래 키가 참조하는 키가 있는 행을 삭제할  모든  삭제

 - 테이블(관계) 삭제 : DROP TABLE (IF EXISTS) DB_NAME.Table_NAME RESTRICT(참조하는 관계가 있을  수행하지 않는다)/CASCADE(참조하는 관계 까지  지워버린다);

 

 4) DML

  • INSERT INTO DB_NAME.TABLE_NAME (속성1,  속성n) VALUES ('속성1 ,  속성n )
  • Select <항목명 / 항목명 AS 별명>

From <관계명>

[Where <조건식>];

 

 5) SQL  확장 

  1. Select 문의 기본 문법에 추가적인 기능 제공

Select <항목명 or 항목명 as 별명>

From <관계명>

Where <조건식> + Like, In, Between

Order by

 

  1. Like : ~처럼(유사한), 유사 검색 (문자)

% / %% / %

 

  1. In : 여러 항목  특정 항목 값만 검색

"Where (카테고리) In (카테고리1,2)"

  • Between : 특정 항목 값의 범위 (주로 날짜나 숫자값)

"Where order_date between '2019-08-01' and '2019-12-31'"

  • Order by : 질의 결과 튜플들을 정렬

Order by 항목명 ASC(오름차순)/DESC(내림차순) [limit 0(시작튜플), 5(개수)]

 

  1. 집계(집단) 함수 : Avg(평균) / sum(합계) / count(개수) / first, last / min, max / std(표준편차) / var(분산)

 

           5. Group by  (동일한 속성 값을 가지는 튜플들을 하나의 그룹으로 묶어주는 명령문)

Select 항목명 / 집계함수(항목명)

From 관계명

Where 조건식

Group by 항목명

 

   6. Having 

Select 항목명 / 집계함수(항목명)

From 관계명

Where 조건식

Group by 항목명

Having (group) 조건식

 

  7. Join : 두개 이상 연관된 관계로 부터 정보 조회하는 연산

Select 항목명 / 집계함수(항목명)

From 관계_1 <조인 연산자(inner_join, outer_join> 관계_2

On 조인 조건(>,<,=  비교연산자)

  • Inner_join

From 관계_1 (inner) join, 관계_2

On 관계_1.공통 속성 = 관계_2.공통 속성

     

         8. 외부 조인 (outer join) : 왼쪽 외부 조인 (left join) / 오른쪽 외부 조인 (right join)

        

         9. 내포문 : select  안에 또다른 select / SQL ( SQL )

  • Select

From

On

Where 조건식 ( select

From

On ~ );

  • Select

From ( from

Where

Group by

Having ~ );

 

 

 


 

728x90

'코딩 어쩌구 > Data' 카테고리의 다른 글

[시험 준비] SQLD 일정 및 내용  (0) 2021.01.15
[생활코딩] 관계형 데이터 모델링  (0) 2020.12.23
[생활코딩] SQL Join  (0) 2020.12.22
[생활코딩] DATABASE1  (0) 2020.12.21
<ADsP>  (0) 2020.11.24