728x90
반응형
SMALL

* Youtube Link - https://www.youtube.com/watch?v=eCrz0gQtSD4&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=8

 

1. 오라클과 SQL SERVER에서의 속성 변경 방법

오라클 : ALTER TABLE 테이블명 MODIFY (컬럼명 바꿀자로형 [default 여부] [NULL 여부], ...);

SQL SERVER : ALTER TABLE 테이블명 ALTER COLUMN 컬럼명 바꿀자료형 [default 여부] [NULL 여부];

 

2. 오라클 컬럼 추가

정답은 3번.

ALTER TABLE Mytest ADD JOB.

 

3. TCL

DDL문은 실행되는 순간 자동으로 commit이 된다.

정답은 7,7,9 이다.

 

4. CUBE Function

CUBE 그리고 ROLLUP이라는 그룹함수에 대한 특징을 정확히 파악을 하셔야 합니다.

그룹함수는 3가지가 있었다.

CUBE - 조합이 가능한 모든 경우의 수를 집계

ROLLUP - 

 

GROUPING SETS - 

 

5. UNION 및 MINUS Functions

애스터리크가 나왔다.

컬럼이 하나 이므로 그냥 나열한다.

UNION은 합집합, 중복제거 그리고 정렬을 해주는 기능이 있다.

MINUS는 차집합이다.

답은 3이다.

 

6. 계층형 쿼리

 

7. 계층형 쿼리문의 내장 함수

정답은 2번이다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

* Youtube Link - https://www.youtube.com/watch?v=lHLx-V76fiA&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=7

 

1. CRUD 매트릭스

행과 열의 매트릭스 방식으로 보여주는 것을 CRUD 매트릭스라고 한다.

그래서 프로세스와 CRUD간의 상관 관계를 알아볼 수 있는 것이다.

데이터와 프로세스의 상관 관점이다.

 

2. 속성의 분류

시, 구, 동, 호를 나누면 어려울 것이다.

그래서 복합하여 사용한다.

이러한 내용을 복합 속성이라고 한다.

 

3. 데이터베이스 3단계 구조

스키마는 관점이라고 보면 된다.

 

4. 반정규화

논리적 데이터 모델링을 할 때 정규화를 필수적으로 한다.

반정규화는 정규화의 반대 개념이다.

중복을 허용하고, 이상한 현상이 발생할 수 있는 상태를 의미.

데이터를 수직 분할하는 이유는 데이터를 100개 출력할 때 컬럼이 많으면 컬럼이 낭비가 된다.

만약에 테이블을 분리했는데, 데이터를 입력해야 한다면 두 테이블 모두 입력을 해주어야 한다.

조인을 하는데 성능을 더 낮게 만드는 경우가 있다.

 

5. 슈퍼/서브 타입 데이터 모델

고객이 슈퍼타입이고 서브타입의 공통적인 속성을 갖는다.

개인고객 그리고 법인고객은 서브타입으로 서로 배타적 관계를 갖는다.

즉 개인고객의 고객번호와 법인고객의 고객번호는 서로 같을 수 없다.

예를 들어 개인고객 고객번호는 1,3,5가 입력되면

법인고객 고객번호는 2,4,6이 입력되는 것이다.

조인이 발생하고 관리가 어렵다.

이렇게 하나로 모아서 관리를 하면 편하겠지만

개인고객 또는 법인고객만 조회를 해야 할 때 전체를 스캔해야 하는 현상이 발생합니다.

SELECT할 때 성능이 안 좋을 수 있습니다.

전부 다 개별적으로 테이블을 생성을 하는 것.

테이블의 수가 많고 조인이 많이 발생해 관리가 어렵다.

 

6. 카디널리티

선택도란 전체 테이블 개수  중에서 내가 뽑고자 하는 개수의 비율이다.

SELECT * FROM TB_CUST WHERE MONEY = 10000; -- 전체 7개 행 중에 2개

선택도: 2/7 == 0.285...

카디널리티(출력된 행의 수) : 선택도 X 전체 레코드수 => 0.285 X 7 => 2

 

7. 데이터 정규화

2차 정규화란

PK A,B를 조합하여 인스턴스 나머지 컬럼 C,D,E를 조회할 수 있다.

여기서 PK A만으로도 나머지 컬럼들을 조회하여 유일하게 식별할 수 있다면

이를 부분 종속성이라고 하여 분리해주어야 한다.

3차 정규화란

컬럼에서 예를 들어 A,B,C,D,E가 있는데

D가 부서코드이고 E가 부서명이며 D가 E를 유일하게 식별할 수 있으면

이를 이행종속성이라고 한다.

테이블을 분리해주어야 한다.

 

8. ERD

IE 표현 기법이다.

PK (식별자)는 중복 x, null x

정답은 3번이다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

* Youtube Link - https://www.youtube.com/watch?v=eRbRTdNEEsc&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=6

 

관계형 데이터베이스

데이터베이스 관련 용어 정리

데이터를 일정한 형태로 저장해 놓은 것

기존 데이터베이스 기능에 추가로

데이터 손상을 방지 및 복구, 인증된 사용자만 접근 등 추가 기능을 지원하는 관리 시스템

oracle, mysql, sql server...

테이블

개념 모델링 -> 논리 모델링 -> 물리 모델링

엔터티          -> 릴레이션     -> 테이블

SQL (Structured Query Language)

종류는 꼭 외워야 한다.

DDL - CREATE, DROP, ALTER, RENAME, TRUNCATE

DML - SELECT, INSERT, UPDATE, DELETE, MERGE

DCL - GRANT, REVOKE

TCL - COMMIT, ROLLBACK, SAVEPOINT

트랜잭션을 예로 들면

송금을 하려면 일련의 과정 1,2,3 까지 완료했을 때 완료로 입력을 하면 송금이 완료된다.

우리가 지정을 할 수 가 있다. 이것이 바로 TCL을 통해서 다룰 수 있다.

SELECT

DISTINCT는 단 하나의 라는 의미를 갖고 있고 중복 제거를 의미합니다.

컬럼의 앞에 DISTINCT를 붙여서 출력을 하면

컬럼의 중복값이 제거 되어서 각 하나의 데이터만 추려집니다.

SELECT문을 이렇게 세로로 작성하는 이유는 가독성을 좋게 하려고 하기 때문이다.

그리고 필요없는 컬럼은 주석처리를 하기 위함이다.

Alias를 사용하는 경우 영구적으로 바뀌는 것은 아니다. 순간만 임시로 바뀌는 것이다.

띄어쓰기도 하나의 특수문자이다.

oracle에서는 $, _, # 만 가능하다.

SELECT 에서 사칙연산하기

FROM 이 가장 먼저 실행 된다.

그리고 질의 결과에서 보이는 것 처럼 한 번에 던져지는 것이 아니라

한 줄 한 줄씩 던져진다.

컬럼에 조회된 값이 하나 하나 출력이 된다.

SELECT 에서 연결 연산하기 (|| 기호 사용하기)

문자열 연산 기호이다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

* Youtube Link - https://www.youtube.com/watch?v=FWsIQlBnBxQ&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=5

 

트랜잭션이란?

데이터베이스의 논리적 연산 단위 또는 논리적 업무 단위

100만원이 있다. -> 김영희가 있다 -> 계좌가 있다. -> 송금

                                                       -> 없다.

                           -> 없다. 

100만원이 없다.

여기 주문과 주문상세간의 관계가 잘못되었다.

주문상세의 테이블에는 주문 테이블이 항상 존재한다.

그래서 트랜잭션을 통해서 1) 주문 정보 저장 2) 주문 상세 저장 을 한 트랜잭션으로 묶어야 한다.

식별관계 VS 비식별관계

식별자 관계는 빌려온 FK가 중복 데이터여도 안 되고, 빈 값이어도 안 된다.

비식별자 관계는 빌려온 FK가 PK의 역할을 하지 않는 것이다.

Barker 표기법에서의 점선은 비식별자관계만을 이야기하지 않는다.

IE 표기법에서점선은 비식별자 관계를 이야기한다.

NULL 속성의 이해

엔터티는 행과 열을 유지를 해야 한다.

데이터가 없다고 해서 왼쪽 그림처럼 되어야 하는 것은 아니다.

NULL이 입력되어서 오른쪽 그림처럼 되어야 한다. 행과 열을 유지해야 한다.

* 필수값은 NULL을 입력할 수 없다.

본질식별자 VS 인조식별자

본질 식별자는 업무 본연의 속성이다.

인조식별자의 경우 임의로 만들자 해서 만든 속성이다. 예를 들면 부서코드와 같은 경우이다.

직원연락처이력 테이블에서

식별자 3개를 조합해서 인스턴스를 찾는데

편의를 위해 이력일련번호를 만들어서 

인스턴스를 찾는다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

* Youtube Link - https://www.youtube.com/watch?v=NrbGR_HiN-Y&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=4

 

정규화란?

데이터 중복을 처리하고 

관심사 별로 처리 되도록

엔터티를 쪼개는 활동

정규화의 반대말로 반정규화가 있다.

중복 포함하기 위해서 엔터티를 합치는 활동이다.

거의 정규화 활동을 하고 나서 특수한 사례에만 반정규화 적용

정규화를 하는 것이 대부분 좋다.

정규화시 입력/삭제/수정의 성능은 향상

조회는 성능 향상 혹은 저하될 수도 있음

함수적 종속이란? F(X) = Y

어떤 기준 값(컬럼)에 의해 데이터가 종속되는 현상을 의미

F(X) = Y에서

X에 "Emp001"을 입력하면 Y로 종속된 유일한 인스턴스의 나머지 값들이 나온다는 것이다.

비정규형: 데이터가 중복이 된 아무렇게나 만든 상태

도메인 원자성(한 칸에 한 데이터)을 만족시키면 1차 정규화가 된다.

부분 종속성 제거를 하면 2차 정규화가 된다.

이행 종속성 제거를 하면 3차 정규화가 된다.

결정자 제거를 하면 BCNF가 된다.

다치 종속을 제거하면 4차 정규화가 된다.

조인속성을 제거하면 5차 정규화가 된다.

3차 정규화 이후로는 정말 특수한 사례에 한다.

1차 정규화

한 칸에 한 값만 들어가도록 한다.

도메인 원자성을 지킨다.

다중 속성이 있거나 하나의 속성에 여러 속성값이 있으면 원자값으로 쪼개준다.

2차 정규화

2차 정규화는 부분 종속 제거이다.

학번 + 과목을 통해서 다음 테이블의 인스턴스를 유일하게 식별할 수 있다.

하지만 학번만 갖고도 성적, 담임교수 그리고 소속학과를 유일하게 식별할 수 있다.

그래서 다음과 같이 학생-교수, 성적 테이블로 나눈 것이다.

그리고 학생-교수 테이블과 성적 테이블은 1:N의 관계이다.

3차 정규화

부서 ID가 부서명을 종속하고 있다.

이런 경우 테이블을 나누어 준다.

첫 번째 테이블은 도메인 원자성을 만족하므로 완전함수 종속이다.

반정규화

정규화/반정규화의 목적은 성능 향상이다.

정규화 상태에서의 데이터 입력은 무조건 좋다.

반정규화는 실무에서 거의 하지 않는다.

다른 방법이 없는지 검토해서 정 방법이 없으면 반정규화를 하는 것이다.

또는 연락처의 경우, 직원 연락처라는 작은 테이블을 만드는 것 보다

직원 테이블에 합쳐서 

성능 향상을 이루는 것이 바람직하다.

조인

여러번 쿼리를 통해서 가져올 데이터를

한번에 가져오는 기능

또한 여러번 쿼리를 조회하는 것 보다 한번에 가져오면 성능이 더 좋다.

성능 관점 때문에 우리가 쓴다.

계층형 데이터 모델

- 자기 자신과 관계가 발생하는 경우

데이터에 관계가 있다.

다음과 같이 데이터가 관계가 있다.

D과장과 C사원은 같은 엔터티이지만 데이터끼리 서로 관계가 있다.

계층 구조를 가진 데이터를 저장한 모델

자기 자신의 엔터티와 관계가 발생하는 경우

계층 쿼리를 통해서 데이터를 조회할 수 있다.

또는 다음과 같이 상호배타적 관계가 있다.

개인고객과 법인고객은 서로 공통적인 부분이 없는 관계이다.

대출현황은 개인/법인 전부 다 대출받을 수 있다.

이 꺽쇠 표시가 있다면 상호배타적 관계이다. 그래서 개인고객과 법인고객은 전혀 공통적인 부분이 없다.

  개인 고객과 법인 고객은 서로 상호배타적 관계이므로

대출현황에 고객구분코드를 통해서 구분해준다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

* Youtube Review - https://www.youtube.com/watch?v=64c0BgeCLAY&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=2

 

개발 방법론 중 기본은 폭포수 모델이다.

기획(요구사항) -> 설계 -> 개발 -> 테스트 -> 운영

운영시에도 계획/분석/설계는 매우 중요하다.

추상적의 반댓말은 구체적

전사적 (EA) 은 Enterprise Architecture 기업입장에서 본다는 의미이다.

예를 들어 전기에 대한 프로젝트가 있다면 개발자는 개발의 지식만 갖고 있고 현업에서 업무 프로세스를 주는 방식이다.

DBMS는 oracle, mysql, sql server 등 굉장히 다양한 데이터베이스가 있다. 개념적 데이터 모델링은 모든 DBMS에서 사용할 수 있다.

결과물인 ERD를 생성하는 것이다.

요구사항을 그린다.

사람들이 화면의 왼쪽 상단부터 본다고 한다.

그래서 보통 중요한 엔터티를 왼쪽 상단에 둔다.

연관이 있을 것 같은 엔터티끼리 연결해준다.

관계명은 기술되어 있지 않는 경우도 많다.

엔터티 안의 인스턴스들이 얼마나 참여하는지

필수여부는 0또는 1를 표시함으로써 표시한다.

이를 ERD라고 한다.

상세하게 그려야 한다. 그래서 업무, 속성, 관계 등 정의

재사용성이 높음, 이 모델링 한 결과물은 설계할 때만 사용하는 것이 아니다. 구축 또는 테스트시 계속 사용한다.

또한 유지보수 해야한다.

논리적 데이터 모델링은 특정 DBMS에 종속적이다.

논리적 데이터 모델링을 할 때 정규화를 수행한다.

먼저 속성을 쭉 나열하는 것이다.

식별자에 대한 요구조건이 있다.

주민등록번호보다 직원ID가 더 부합하기 때문에 직원ID를 PK로 사용한다.

만약 직원이 두개 이상의 연락처를 갖을 수 있으면, 직원 연락처로 나누어 주어야 한다.

파급효과: 초반에 엉망으로 설계하면 개발하다가 나중에 엎게 되어 힘듬

2. 간결한 설계또가 있어야 쉽게 이해 가능

3. 데이터 중복, 비유연성, 비일관성 등 이상한 데이터가 안 들어감

데이터의 중복이 일어나면 다음과 같이 한 ID에 여러 데이터가 조회되는

데이터 중복 현상이 발생한다.

사소한 프로세스(업무)의 변화에도 테이블을 바꿔야 하는 경우

연락처가 변경되면 이를 이력에 쌓아야 한다.

스키마는 각각 종속적이다.

개념 스키마와 내부 스키마의 독립성

저장공간 (하드 디스크) 등을 데이터베이스에 추가해도 개념 스키마를 변경할 필요 없다.

유일하게 인스턴스를 식별할 수 있다.

(1) 대표성 여부: 직원 ID 는 주식별자, 주민등록번호는 보조식별자

(2) 스스로 생성 여부: 내부식별자는 테이블 내부의 PK이다. 외부식별자는 외부 테이블에서 빌려온 FK이다.

(3) 단일속성여부: 단일식별자는 하나의 식별자이다. 복합식별자는 직원연락처처럼 2개이상의 식별자 조합이다. 예를 들어 직원연락처는 직원ID와 구분코드로 식별자가 조합되어 있다.

(4) 대체여부: 본질식별자는 업무 본연에 있던 대상이다. 인조식별자

예를 들어 부서명을 식별자로 사용하여도 된다. 근데 너무 길다. 인프라, 서비스, 통신. 하나 코드 따서 만들자.

D001, D002 등이다. 편의를 위해서 임의로 만든 식별자를 인조식별자라 한다.

실무 입장에서는 주민번호는 암호화가 되어야 한다.

주식별자 도출기준 특징

1. 유일성

2. 최소성

3. 불변성

4. 존재성

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

*Youtube Link - https://www.youtube.com/watch?v=64c0BgeCLAY&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=2

 

03. 관계(Relationship) 이해하기

엔터티의 관계를 부여해서 

데이터의 의미를 가져가는 것

존재에 의한 관계

행위에 의한 관계

관계차수는 각 인스턴스들이 얼마나 참여하는지

IE 표기 방식은 1을 사용을 하고

BARKER 표기 방식은 1은 안 적으면 된다.

M:N의 관계는 1:N, N:1로 쪼개야 한다.

직원이 신입이면 부서 배정이 안 되었을 수 있다.

상태를 코드로 관리하는 것

통계성도 있다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

데이터베이스가 뭐(WHAT)지?

이 통은 하드디스크이다.

여러 데이터들이 모여있는 하드디스크다.

예를 들어 엑셀의 한 명의 정보가 바뀌면

모두가 바꿔야 하는 어려움이 발생했습니다.

데이터를 한 곳에 모아 저장하게 되면

한 명이 바꾸면 다른 사람들은 추가적으로 바꿀 필요 없다.

정보가 필요하다.

로그인 예시

이러한 정보들을 저장하는 공간이 바로 데이터베이스이다.

현실 정보를 모델링

먼저 간단하게 개념적 데이터 모델링을 하고 

이를 논리적으로 데이터 모델링을 합니다.

그리고 성능까지 고려하여 물리적 데이터 모델링을 합니다.

그리고 데이터베이스에 저장할 수 있게 세팅하면 끝입니다.

집합적으로 단순하게 표현

엔터티안에 있는 개별적인 대상

업무에 필요한 것

인스턴스별 유일하게 구분 가능

인스턴스가 2개 이상 존재

속성이 2개 이상 존재

관계가 하나 이상 존재

유형, 개념, 사건등의 엔터티의 분류가 있다.

본래 업무에 존재하는 정보

업무에 있어 중심 역할

2개 이상 엔터티로부터 발생 

가능한 협업 용어를 쓴다.

의미가 분명하면 좋다.

엔터티가 가지는 공통적인 특징

나중에 우리가 관리하고자 하는 정보

최소 단위 

속성은 각각의 인스턴스를 설명할 수 있다.

하나의 속성에는 하나의 속성값만 들어간다.

각 인스턴스를 식별할 수 있는 속성의 집합

기본은 업무로부터 추출한 속성, 제일 많이 발생

설계는 예를 들어 부서명은 기니까 이 부서명은 코드로 관리하겠다 해서 부서코드를 만드는 것이다.

파생은 부서별연봉합 처럼 데이터의 변경이 일어나면 같이 변경이 일어나야하는 부분이다.

속성은 PK나 FK로 나누어야 한다.

도메인은 속성의 특징이다. 범위를 의미한다.

각 속성마다 자료형 및 제약조건을 줄 때 결정 된다.

 

 

 

데이터베이스가 어떻게 쓰이지?

 

 

 

 

 

참고 링크 - https://www.youtube.com/watch?v=lxiEiAjp7d0&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn

728x90
반응형
LIST

+ Recent posts