개발 등/ORACLE 23

가상의 논리적인 테이블

1. 입력 프로세스 데이터를 입력하면 INSERTED 라는 가상의 논리적인 테이블에 데이터가 들어간다 트랜잭션이 끝나면(commit되면) INSERTED 테이블의 내용이 물리적인 테이블에 반영되고 가상의 테이블은 삭제된다. 2. 삭제 프로세스 데이터를 삭제하면 물리적 테이블의 데이터가 DELETED라는 가상의 논리적인 테이블로 옮겨진다. 트랜잭션이 끝나면 DELETED 가상테이블이 삭제되면서 데이터 역시 삭제되게 된다, 3. 수정 프로세스 데이터를 수정하게 되면 먼저 수정될 데이터가 DELETED 테이블에 옮겨진다 새로운 값이 INSERTED 테이블에 옮겨진다. 트랜잭션이 완료되면 INSERTED 테이블의 내용이 물리적인 테이블에 반영되고 INSERTED와 DELETED 테이블은 삭제된다.

개발 등/ORACLE 2009.03.21

인덱스(Index)의 유형과 특성

1. 클러스터드 인덱스(Clustered Index) 색인을 만들기 원하는 컬럼에 클러스터드 인덱스를 만들게 되면 기본적으로 그 행을 기준으로 물리적으로 데이터를 정렬시킨다. 한 테이블에 하나의 클러스터드 인덱스만 만들 수 있다. 기본키를 만들면 기본적으로 기본키에 클러스터드 인덱스가 만들어진다. # 인덱스 생성 create index IndexName on TableName(Column[,Column]); create clustered index IndexName on TableName(Column); # 인덱스의 생성과정 1. 데이터 페이지에 클러스터드 인덱스 칼럼을 기준으로 데이터가 물리적으로 정렬된다. 2. 각 데이터 페이지의 첫번째 레코드의 인덱스 칼럼을 기준으로 키 값에 해당하는 상위 레벨의 ..

개발 등/ORACLE 2009.03.21

정규화

정규화 : 데이터 중복을 방지하고 데이터를 효율적으로 저장하며 속성들을 테이블에 정확히 위치하게 하는 과정이다. 정규화는 최종적인 모델링이 아니며 모델링의 과정일 뿐이며 절차적인 과정이 아님에 유의해야 한다. 제1 정규화 ⊙ 반복된 속성이나 그룹 속성은 삭제하고, 새로운 실체를 추가한 뒤 기존의 실체와 1 : N의 관계를 형성한다 제2정규화 ⊙ 복합키로 구성된 경우 모든 칼럼들은 복합키 전체에 의존적이어야 한다. ⊙ 복합키 일부에 의존적인 칼럼은 제거해야 한다 ⊙ 복합키가 아닌 경우는 제2정규화의 대상이 아니다 제3정규화 ⊙ 테이블의 칼럼들은 기본키에 의존적이어야 한다. ⊙ 기본키 외의 칼럼에 종속적인 칼럼은 제거해야 한다.

개발 등/ORACLE 2009.03.17

Oracle: 제약 조건(PK, FK, default, unique, check)의 이해 및 실습

▩ 제약 조건(PK, FK, default, unique, check)의 이해 및 실습 - 정규화에 대한 지식을 갖어야 쉽게 구현 가능합니다. - Column Level: 컬럼 정의 시 선언 합니다. - Table Level: 컬럼을 다 정의하고 난 후 정의 합니다. - NOT NULL은 Column Level만 사용 가능합니다. - Constraint name은 보통 테이블명_컬럼명_PK, FK 로 지정 합니다. - 하나의 큰 테이블을 2개 이상의 테이블로 분리할시에 그 분리된 테이블들은 하나의 공통된 컬럼을 반드시 가지고 있어야 합니다. 이 공통된 컬럼은 테이블을 다시 합칠(JOIN)경우 join의 기준값으로 사용하게 됩니다. - 테이블을 2개로 분리할경우 컬럼에 중복된 값이 들어가서는 안되는 테이블..

개발 등/ORACLE 2008.08.11

NULL 에 대한 정리

1. NULL값 정의 RDBMS에서 NULL은 0 이나 공백이 아닌 값을 알수가 없다의 의미입니다. 이말은 값이 없다 입니다. 이는 Oracle 상에서 수치를 계산할때 문제가 됩니다. null이 포함된 수식 계산에서는 무조건 null이 출려되어 잘못된 결과가 나오기 때문입니다. 특히 수치계산일때는 테이블 생성시 not null로 해주거나 nvl()함수로 제대로 치환해줘야 합니다. 2. NULL값 잘못된 처리 숫자의 경우 create table jun1( a number, b number); insert into jun1 values(null,12); select a+b from jun1; 라고 한다면 12가 나올것 같지만 null값이 포함된 계산식은 무조건 null이 나옵니다. 그래서 nvl()를 사용하..

개발 등/ORACLE 2008.08.06