목록전체 글 (212)
개발자 끄적끄적
- 정규화는 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정이다 - 정규화는 데이터의 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법이다 - 정규화는 테이블을 분해해서 데이터 중복을 제거하기 때문에 데이터 모델의 유연성을 높인다 - 정규화를 수행하면 비즈니스에 변화가 발생하여도 데이터 모델의 변경을 최소할 수 있다 - 데이터베이스의 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법이다 - 반정규화는 조회(SELECT) 속도를 향상하지만, 데이터 모델의 유연성은 낮아진다 - 정규화에 충실하면 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우 - 다량의 범위를 자주 처리해야 하는 경우 - 특정 범위의..
- 각 속성이 가질 수 있도록 허용된 값들의 집합 - 속성명과 도에민명이 반드시 동일할 필요는 없다 - 릴레이션에서 모든 속성의 도메인은 원자적(Atom-ic)이어야 한다 - 도메인별로 데이터 타입과 길이를 지정한다 - 각 엔터티 속성에 도메인을 할당한다 - 속성을 명사로 분리한다 - 주식별자에 의해 엔터티 내에 모든 인스턴스가 유일하게 구분되어야 한다 - 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다 - 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다 - 주식별자가 지정되면 반드시 값이 들어와야 한다 1. 반정규화 대상 확인 - 조인(Join)에 사용되는 테이블 및 대량의 데이터 처리, 통계 처리 등을 확인한다 2. 다른 방법 결정 - 인덱스 조정을 통한 튜닝을 실시..
- 분할 투명성 - 위치 투명성 - 중복(복제) 투명성 - 병행 투명성 - 장애 투명성 - 분산 데이터베이스를 사용하는 고객은 시스템이 네트워크로 분산되어 있는지의 여부를 인식하지 못하면서, 자신만의 데이터베이스를 사용하는 것처럼 사용할 수 있다. 이처럼 데이터베이스는 투명성을 제공해야 한다 - 투명성은 분산 데이터베이스에서 중요한 요소이며 투명성의 종류에는 분할, 위치, 지역사상, 중복, 장애 및 병행 투명성이 있다 1. 분할 투명성 - 고객은 하나의 논리적 릴레이션이 여러 단편으로 분할되어 각 단편의 사본이 여러 시스템에 저장되어 있음을 인식할 필요가 없다 2. 위치 투명성 - 고객이 사용하려는 데이터의 저장 장소를 명시할 필요가 없다 - 고객은 데이터가 어느 위치에 있더라도 동일한 명령을 사용하여 ..
- SQL 실행 계획(Execution Plan)을 수립하고 SQL을 실행한다 - 옵티마이저는 SQL의 실행 계획을 수립하고 SQL을 실행하는 데이터베이스 관리 시스템의 소프트웨어이다 - 옵티마이저는 데이터 딕셔너리(Data Diectionary)에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용을 산정한다 - 개발자가 SQL을 실행하면 파싱(Parsing)을 실행해서 SQL의 문법 검사 및 구문 분석을 수행한다 - 구문 분석이 완료되면 옵티마이저가 규칙 기반 혹은 비용 기반으로 실행 계획을 수립한다 - 옵티마이저는 기본적으로 비용 기만 옵티마이저를 사용해서 실행 계획을 수립한다 비용 기반 옵티마이저는 통계정보를 활용해서 최적의 실행 계획을 수립하는 것이다 - 실행 계획 수립이 완료..
- 서브쿼리의 결과가 여러 개의 행을 반환하는 것으로 다중 행 연산자를 사용해야 한다 1. IN(Subquery) - Main query의 비교조건이 Subquery의 결과 중 하나만 동일하면 참이 된다 2. ALL(Subquery) - Main query와 Subquery의 결과가 모두 동일하면 참이 된다 3. ANY(Subquery) - Main query의 비교조건이 Subquery의 결과 중 하나 이상 동일하면 참이 된다 4. EXISTS(Subquery) - Main query와 Subquery의 결과가 하나라도 존재하면 참이 된다 - 즉, 어떤 데이터 존재 여부를 확인하는 것으로 결과는 참과 거짓이 반환된다 - 스칼라 Subquery는 반드시 한 행과 한 칼럼만 반환하는 서브쿼리이다 - 만약 ..
- 해시 조인은 먼저 선행 테이블을 결정하고 선행 테이블에서 주어진 조건(WHERE구)에 해당하는 행을 선택한다 - 해당 행이 선택되면 조인 키(JOIN KEY)를 기준으로 해시 함수를 사용해서 해시 테이블을 메인 메모리(MAIN MEMORY)에 생성하고 후행 테이블에서 주어진 조건에 만족하는 행을 찾는다 - 후행 테이블의 조인 키를 사용해서 해시 함수를 적용하여 해당 버킷을 검색한다 - 해시 조인은 EQUI JOIN만 사용 가능한 방법이다 - 해시 함수는 테이블을 해시 메모리에 적재한 후에 해시 함수로써 연결하는 방법이다 - INTERSECT 연산은 두 개의 테이블에서 교집합을 조회한다 - 즉, 두 개 테이블에서 공통된 값을 조회한다 - Non-EQUI는 두 개의 테이블 간에 조인하는 경우 "="을 사..
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY SELECT ename FROM emp WHERE empno=10 GROUP BY ename HAVING count(*) >= 1 ORDER BY ename; 1. 명시적(Explicit) 형변환 - 형변환 함수를 사용해서 데이터 타입을 일치 1) TO_NUMBER(문자열) : 문자열을 숫자로 변환 2) TO_CHAR(숫자 혹은 날짜, [FORMAT]) : 숫자 혹은 날짜를 지정된 FORMAT의 문자로 변환한다 3) TO_DATE(문자열, FORMAT) : 문자열을 지정된 FORMAT의 날짜형으로 변환한다 2. 암시적(Implicit) 형변환 - 개발자가 형변환을 하지 않은 경우 데이터베이스 관리 시스..
[begin_label:] LOOP statement_list end loop[end_label] [label] : LOOP ... --terminate the loop if condition then leave [label]; - exit iterate [label]; -반복 end if ... end loop; - leave label : 지정된 label의 반복문을 벗어나게 한다 - iterate label : 지정된 label를 반복하게 한다 ex)1~10까지 출력 create procedure loop_test1() begin declare a int default 0; start_a : loop set a =a+1; if a>10 then leave start_a; end if; select ..
use information_schema; show tables; select * from TABLE_CONSTRAINTS tc ; use lecture; desc student; drop table student; #student table 삭제 where create table member( sno int primary key ); #컬럼을 지정하면서 제약 조건 지정 create table student( sno int primary key, mName varchar(20) not null, phone varchar(30) unique, address varchar(50) default 'seoul', gender varchar(2) check(gender in('m','f')), score int ..
[첫 번째 유형] case value when c1 then p1; when c2 then p2; ... else p3; end case; - c1, c2는 value에 대응되는 상수값 - p1, p2, p3는 처리 내용 ex) create procedure case_test1() begin declare score int default 0; declare str varchar(100); set score = 80; case score when 80 then set str = '팔십'; when 70 then set str = '칠십'; end case select score, str; end; [두 번째 유형] case when c1 then p1 when c2 then p2 else p3 end ca..