# 데이터베이스
# 오라클 시퀀스(Oracle Sequence)
UNIQUE한 값을 생성해주는 오라클 객체
시퀀스를 생성하면 PK와 같이 순차적으로 증가하는 컬럼을 자동 생성할수 있다.
CREATE SEQUENCE 시퀀스이름
START WITH n
INCREMENT BY n ...
# DBMS란?
데이터베이스 관리 시스템
다수의 사용자가 데이터베이스 내의 데이터를 접근할 수 있도록 설계된 시스템
# DBMS의 기능은?
정의 기능(DDL: Data Definition Language)
- 데이터베이스가 어떤 용도이며 어떤 식으로 이용될것이라는 것에 대한 정의가 필요함
- CREATE, ALTER, DROP, RENAME
조작 기능(DML: Data Manipulation Language)
- 데이터베이스를 만들었을 때 그 정보를 수정하거나 삭제 추가 검색 할 수 있어야함
- SELECT, INSERT, UPDATE, DELETE
제어 기능(DCL: Data Control Language)
- 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령
- GRANT REVOKE
# UML이란?
프로그램 설계를 표현하기 위해 사용하는 그림으로 된 표기법
이해하기 힘든 복잡한 시스템을 의사소통하기 위해 만듬
# DB에서 View는 무엇인가? 가상 테이블이란?
허용된 데이터를 제한적으로 보여주기 위한 것
하나 이상의 테이블에서 유도된 가상 테이블이다.
- 사용자가 view에 접근했을 때 해당하는 데이터를 원본에서 가져온다.
view에 나타나지 않은 데이터를 간편히 보호할 수 있는 장점 존재
# 정규화란?
중복을 최대한 줄여 데이터를 구조화하고, 불필요한 데이터를 제거해 데이터를 논리적으로 저장하는 것
이상현상이 일어나지 않도록 정규화 시킨다!
# 이상현상이란?
릴레이션에서 일부 속성들의 종속으로 인해 데이터 중복이 발생하는 것 (insert, update, delete)
# 데이터베이스를 설계할 때 가장 중요한 것이 무엇이라고 생각하나요?
무결성을 보장해야 합니다.
# 무결성 보장 방법은?
데이터를 조작하는 프로그램 내에서 데이터 생성, 수정, 삭제 시 무결성 조건을 검증한다.
트리거 이벤트 시 저장 SQL을 실행하고 무결성 조건을 실행한다.
DB제약조건 기능을 선언한다.
# 데이터베이스 무결성이란?
테이블에 있는 모든 행들이 유일한 식별자를 가질 것을 요구함 (같은 값 X)
외래키 값은 NULL이거나 참조 테이블의 PK값이어야 함
한 컬럼에 대해 NULL 허용 여부와 자료형, 규칙으로 타당한 데이터 값 지정
# 트리거란?
자동으로 실행되도록 정의된 저장 프로시저
(insert, update, delete문에 대한 응답을 자동으로 호출한다.)
# 사용하는 이유는?
업무 규칙 보장, 업무 처리 자동화, 데이터 무결성 강화
# 오라클과 MySQL의 차이는?
일단 Oracle이 MySQL보다 훨~씬 좋음
오라클 : 대규모 트랜잭션 로드를 처리하고, 성능 최적화를 위해 여러 서버에 대용량 DB를 분산함
MySQL : 단일 데이터베이스로 제한되어있고, 대용량 데이터베이스로는 부적합. 작은 프로젝트에서 적용시키기 용이하며 이전 상태를 복원하는데 commit과 rollback만 존재
# Commit과 Rollback이란?
Commit : 하나의 논리적 단위(트랜잭션)에 대한 작업이 성공적으로 끝났을 때, 이 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산
Rollback : 하나의 트랜잭션 처리가 비정상적으로 종료되어 DB의 일관성을 깨뜨렸을 때, 모든 연산을 취소시키는 연산
# JDBC와 ODBC의 차이는?
JDBC 자바에서 DB에 접근하여 데이터를 조회, 삽입, 수정, 삭제 가능 DBMS 종류에 따라 맞는 jdbc를 설치해야함
ODBC 응용 프로그램에서 DB 접근을 위한 표준 개방형 응용 프로그램 인터페이스 MS사에서 만들었으며, Excel/Text 등 여러 종류의 데이터에 접근할 수 있음
# 데이터 베이스에서 인덱스(색인)이란 무엇인가요
- 책으로 비유하자면 목차로 비유할 수 있다.
- DBMS에서 저장 성능을 희생하여 데이터 읽기 속도를 높이는 기능
- 데이터가 정렬되어 들어간다
- 양이 많은 테이블에서 일부 데이터만 불러 왔을 때, 이를 풀 스캔 시 처리 성능 떨어짐
- 종류
- B+-Tree 인덱스 : 원래의 값을 이용하여 인덱싱
- Hash 인덱스 : 칼럼 값으로 해시 값 게산하여 인덱싱, 메모리 기반 DB에서 많이 사용
- B>Hash
- 생성시 고려해야 할 점
- 테이블 전체 로우 수 15%이하 데이터 조회시 생성
- 테이블 건수가 적으면 인덱스 생성 하지 않음, 풀 스캔이 빠름
- 자주 쓰는 컬럼을 앞으로 지정
- DML시 인덱스에도 수정 작업이 동시에 발생하므로 DML이 많은 테이블은 인덱스 생성 하지 않음