DB 96

이상현상

샘플 테이블 삽입이상 - 어떤 정보를 삽입하고자 할 때 원하지 않는 정보까지 함께 삽입해야하는 현상 - 샘플테이블에서 (학과명=경영정보, 학과사무실=경영관)이라는 정보를 넣을 때 기본키인 학번이 NULL이 되면 안되므로 경영정보 소속인학생의 학번과 함께 학과명과 학과사무실 정보를 삽입해야함 삭제이상 - 어떤 정보를 삭제하고자 할 때 필요한 정보까지 함께 삭제되는 현상 - 학번=3333인 학생을 삭제할 때 해당 학생이 물리학과에 소속된 유일한 학생이면 물리학과의 사무실이 자연관 이라는 정보도 함께 삭제됨 수정이상(갱신이상) - 어떤 정보를 수정하고자 할 때 동일한 내용의 여러 건의 데이터에서 반복 수정해야 되는 현상 - 컴퓨터공학과의 사무실이 변경되면 컴퓨터공학과 학생 수만큼 사무실 column을 수정해야함

DB/[이론] 2022.03.05

반정규화 기법

계산된 컬럼 추가 - 총 판매액, 평균잔고, 계좌 평가 등을 미리 계산하고, 결과를 특정 칼럼에 추가 테이블 수직 분할 - 하나의 테이블을 두 개 이상의 테이블로 분할하여 새로운 테이블을 만드는 것. 테이블 수평 분할 - 하나의 테이블에 있는 값을 기준으로 테이블을 분할하는 방법 테이블 병합 - 1:1관계의 테이블을 하나의 테이블로 병합하여 성능 향상 - 1:N관계의 테이블을 병합하여 성능을 향상시킨다. - 슈퍼 타입과 서브 타입 관계가 발생하면, 테이블을 통합하여 성능을 향상시킨다 * 슈퍼타입, 서브타입 1. 고객 엔티티(슈퍼타입)는 개인고객(서브타입)과 법인 고객(서브타입)으로 분류 2. 베타적관계는 서브엔티티중 하나만(고객은 개인고객이거나 법인고객 둘중 하나만 될 수 있음), 포괄적 관계는 서브엔..

DB/SQL 2022.02.18

옵티마이저 조인

nested loop 조인 - 하나의 테이블에서 데이터를 먼저 찾고 그 다음 테이블을 조인 - 먼저 조회하는 테이블을 외부 테이블, 그 다음 조회하는 테이블을 내부 테이블이라고 한다. - 외부테이블의 크기가 작은것을 먼저 찾는것이 중요 - random access가 많이 발생하므로 이를 줄여야 성능 향상. Sort merge 조인 - 두 개의 테이블을 sort_area라는 메모리 공간에 모두 로딩하고 sort수행 - 두개의 테이블이 sort가 완료되면 두개의 테이블을 merge - sort가 발생하기 때문에 데이터양이 많아지면 성능이 떨어진다 hash 조인 - 두 개의 테이블 중에서 작은 테이블을 hash 메모리로 로딩하고, 두개의 테이블의 조인키를 사용하여 해시 테이블을 생성 - 해시함수를 사용해서 ..

DB/SQL 2022.02.18

옵티마이저

옵티마이저란? - SQL의 문법적 오류를 확인한다 - SQL의 실행 계획을 수립하고, SQL을 실행하는 데이터베이스 관리 시스템의 소프트웨어 - 가장 빠른 데이터 접근 경로를 작성하고 채택한다. (동일한 결과가 나오는 SQL도 어떻게 실행하느냐에 따라 성능이 달라진다) ex) A 테이블과 B 테이블의 and연산을 할 때 크기가 작은 테이블을 먼저 읽어올 때 속도가 빨라진다. 옵티마이저 특징 - 데이터 딕셔너리에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용을 산정한다 - 최저비용을 가지고 있는 계획을 선택해서 SQL을 실행한다. 옵티마이저 실행 계획 - 개발자가 sql실행시 파싱(parsing)을 실행하여 sql의 문법 검사 및 구문분석 수행 - 옵티마이저가 규칙기반 or 비..

DB/SQL 2022.02.18

테이블 파티션의 종류

Range Partition - 값의 범위를 기준으로 여러 개의 파티션으로 데이터를 나누어 저장하는것 - ex) 봉급을 기준으로 200~4000이하인 파티션과, 5000~7000천 이상인 파티션 생성 List Partition - 특정 값을 기준으로 분할하는 방법 - 부서번호가 10번인 파티션과, 20번인 파티션으로 분류 Hash Partition - 데이터베이스 관리시스템이 내부적으로 해시함수를 사용하여 데이터를 분할 - 데이터베이스 관리 시스템이 알아서 분할하고 관리하는것

DB/SQL 2022.02.17

group by 관련함수

ROLLUP - 계층별로 group by를 수행 - rollup 뒤에 컬럼이 두개이상오면, 순서에 따라 결과가 달라짐 - 예시 SELECT DEPTNO,JOB,sum(sal) FROM table GROUP BY ROLLUP(DEPTNO,JOB) - 결과 GROUPING SET - 조합별 group by 쌍을 확인한다. - 예시 SELECT JOB,DEPTNO,count(*) FROM table GROUP BY GROUPING SETS(JOB,DEPTNO) - 결과 CUBE - 조합별, 소계 등 모든 경우의 group by 쌍을 확인한다. - 코드예시 SELECT DEPARTMENT_ID,JOB_ID,SUM(SALARY) FROM table GROUP BY GROUPING CUBE(DEPARTMENT_I..

DB/SQL 2022.02.15

SQL 기본 내장함수

TO_CHAR - char형으로 변경 - 날짜, 숫자 모두 char형으로 변환 가능 SYSDATE - 오늘의 날짜를 출력 - 예시 SELECT SYSDATE FROM TABLE - 결과 EXTRACT - 년, 월, 일 등을 추출하는 함수 - 예시 SELECT EXTRACT(YEAR from sysdate), EXTRACT(MONTH from sysdate), EXTRACT(DAY from sysdate) from TABLE - 결과 TRUNC - 버림하는 함수 - 예시 SELECT TRUNC(숫자,옵션) from TABLE --"숫자"를 "옵션"자리 까지 절사 - 결과 DECODE - 조건문을 만드는 함수 - DECODE(조건1, 조건1 성립시 출력값, 조건2, 조건2 성립시 출력값 ... , '..

DB/SQL 2022.02.15

뷰(View)

뷰의 정의 - 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 생성한 가상 테이블 뷰의 특징 - 참조한 테이블이 변경되면 뷰도 변경된다 - 뷰의 검색은 테이블과 동일하게 할 수 있지만, 뷰에 대한 입력 수정 삭제는 제약이 있다. - 특정 컬럼만 조회 되므로 보안성이 향상된다. - 한번 생성된 뷰는 변경할 수 없다. - ALTER이용하여 변경이 불가하다 사용 예시 CREATE VIEW T_EMP AS SELECT * FROM EMP;

DB/[이론] 2022.02.15

트랜젝션(transaction)의 정의 및 특징

트랜젝션이란 -쪼갤 수 없는 업무 처리의 최소단위 - A가 B에게 돈 1000원을 주었다면, A는 -1000, B는 +1000이 되어야 한다. 한 사람만 돈을 얻거나 잃는 일은 있을 수 없다. 이러한 업무처리의 최소단위를 묶어주는 것이 트랜젝션의 역할이다. 커밋(commit)과 롤백(rollback) - 커밋 : 트랜잭션 처리가 정상적으로 된 경우 결과를 반영함 - 롤백 : 오류가 발생한 경우 모든 동작을 원래대로 되돌림 트랜젝션의 특징 1. 일관성 : 트랜잭션의 결과로 DB상태가 모순되지 않아야 한다. 2. 원자성 : 작업이 모두 실행되거나, 하나도 실행되지 않아야 한다. 3. 연속성 : 트랜잭션 결과는 영구적으로 보장한다 4. 고립성 : 트랜잭션 연산 중간결과에 다른 트랜잭션이 접근할 수 없다.

DB/[이론] 2022.02.14

데이터베이스 종류

계층형 - 폴더와 파일등의 계층 구조로 데이터를 저장하는 방식 - 하드디스크나 DVD파일시스템 - 가장 오래된 데이터베이스 - 프로세스 변경에 따른 데이터 구조 변경이 어려움 네트워크형 - 그래프 구조의 데이터베이스 - 다대다 관계를 유지하고 데이터의 연결을 위해 포인터를 사용한다 - ex) 관계형 데이터베이스 - 행과 열을 가지는 표 형식의 데이터를 저장하는 형태의 데이터베이스 객체 지향 데이터베이스 - 관계형 데이터베이스는 새로운 데이터타입 생성 및 확장, 복합 객체표현시 상호 관련된 엔티티 처리가 어려움 - 사용자 정의 데이터타입 지원 및 상속성 명세 가능 - 비정형 복합 정보의 모델링 가능 - 트랜젝션 처리, 동시처리, 백업 및 복구 등에 취약하여 많이 확대되지 못함 키 밸류 스토어(KVS) - ..

DB/[이론] 2022.02.14

[ERD] 속성, 관계

속성 1. 분해 여부에 따른 속성의 종류 - 단일 속성 : 하나의 의미로 구성된 것(회원ID, 이름) - 복합 속성 : 여러개의 의미가 있는 것(주소 시 군 구) - 다중값 속성 : 속성에 여러 값을 가질 수 있는 것 (상품리스트) 2. 특성에 따른 속성의 종류 - 기본 속성 : 본래의 속성(이름, 계좌번호, 주문일시) - 설계 속성 : 모델링 과정에서 발생되는 속성(상품코드, 지점코드) - 파생 속성 : 다른 속성에 의해 만들어지는 속성 (합계, 평균) ​ 관계 (1) 식별관계 : 기본키끼리 (2) 비식별관계 : 기본키---기본키아닌것

DB/[이론] 2022.02.14

3층 스키마

3층 스키마란 - 스키마란? : 데이터베이스의 구조와 제약조건에 대한 구체적인 명세 - 사용자, 설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술하고, 이들간의 관계를 정의한 ANSI표준 - 데이터베이스의 독립성을 확보하기 위한 방법 데이터베이스 독립성 1. 데이터베이스 독립성확보하면? (1) 데이터 복잡도증가 (2) 데이터 중복 제거 (3) 사용자 요구사항 변경에 따른 대응력 증가 (4) 관리 및 유지보수 비용절감 2. 독립성의 종류 (1) 논리적 독립성 : 응용프로그램에 영향을 주지 않고 논리적 구조를 변경할 수 있는 것. (2) 물리적 독립성 : 논리적 구조에 영향을 미치지 않고 물리적 구조를 변경할 수 있는 것. 스키마의 종류 1. 외부 스키마 (1) 사용자 관점, 업무상 관..

DB/[이론] 2022.02.14

데이터 모델링의 의미 및 주요특징

데이터 모델링의 의미 복잡한 현실세계에 존재하는 데이터(사람 사물 현상)들을 단순화하여 일정한 표기법으로 컴퓨터 세계의 데이터베이스로 옮기는 작업 데이터 모델링의 특징 - 추상화 : 현실세계를 간략하게 표현 - 단순화 : 누구나 쉽게 이해할 수 있도록 표현 - 명확성 : 명확하게 의미해석 필요 데이터 모델링의 단계 1. 개념적 모델링 (1) 현실세계에서 나타나는 정보 구조를 추상적으로 개념화 하는것 (2) 업무 전체에 대해서 데이터 모델링 수행 (3) 복잡하게 표현하지 않고 중요한 부분을 위주로 (4) 추상화 수준이 높고 포괄적인 수준 2. 논리적 모델링 (1) 사람의 이해를 위한 개념적 설계의결과를 데이터베이스 저장에 용이한 논리적 구조로 변환하는것 (2) 식별자 도출, 모든 릴레이션 정의, 속성과 키..

DB/[이론] 2022.02.14