본문 바로가기

교육/SQL

Day 22 (SQL)

반응형

테이블상세도표와 SQL 스크립트를 작성해서 제출하세요테이블명과 컬럼명은 모델링에 나온 한글이름을 그대로 사용합니다제약조건은 그림을 도대로 직접 결정합니다.

 

논리 모델 사진

 

체출 답안

더보기
작성한 상세도표
작성한 스크립트

 

====================================평가====================================

Day 21 (SQL)에서 언급했던 number타입은 자동으로 not null으로 설정되는 줄 알았으나 not null로 지정해줘야한다.

 

=========================================================================

INDEX

관리자 과정을 배우기 전까지 내부를 볼수없다.

squlplus는 프로세서(프로그램)로서 서버에서 받아온 데이터를 출력하는 것이다

데이터를 읽어오는 서버는 serverprocess(sp)라고 하며 oracle이 여기에 속한다.

oracle의 데이터를 읽어오는 방식은 full table scan방식, index scan방식이 있다,

full table scan방식은 물리적 저장장치(segment)에 있는 테이블 전부를 읽은 뒤 맞는 조건을 출력하는 방식

index scan방식은 인덱스를 통해서 맞는 조건을 출력하는 방식이다.

 

인덱스와 테이블은 서로 다른 세그먼트이기 때문에 인덱스를 무분별하게 지정하게 되면 시스템에 굉장한 부담이 된다.

인덱스는 기준데이터가 자동 정렬되어 테이블이 생성되며 ROWID를 그 값으로 가져 일치 하는 조건의 데이터를 찾은뒤 ROWID의 데이터를 출력하는 것이다. ROWID는 물리적은 위치정보를 나타내는 값으로 C언어의 주소값과 같은 개념이다.

테이블은 기준데이터가 자동 정렬되지 않고 데이터를 저장하며 모든 값을 비교한다. 만약 데이터를 찾더라도 무조건적으로 마지막 데이터까지 비교 하게 되는데 조건 값이 중복되는 값이 있을 수 있기 때문이다.

 

인덱스의 종류를 구분하는 방식은 매우 다양한데 그중에서 데이터 값의 중복 가능여부로 구분을 하면 고유 인덱스(Unique Index)와 비고유 인덱스(Non Unique Index)가 있다.

고유 인덱스(Unique Index)는 중복 되어서는 안되는 값들이 사용되고, 비고유 인덱스(Non Unique Index)는 중복되어도 괜찮은 값들이 사용된다.

 

인덱스 생성은 2가지로 되는데 자동생성방식과 수동생성 방식이다.

자동생성 방식은 PK, UK가 설정된 컬럼의 고유 인덱스가 자동 생성된다.

수동생성 방식은 CREATE INDEX명령어를 통해 사용자가 직접 인덱스를 생성하는 방식인데, 비고유 인덱스로 생성된다.

여기서 주의할점은  인덱스를 무분별하게 지정하게 되면 시스템에 굉장한 부담이 되기 때문에 데이터베이스튜너나 모델러가 한정적으로 사용한다. 하지만 FORIEIGN KEY는 반드시 생성해 주어야 한다.

 

인덱스 삭제는 'DROP INDEX 인덱스명'으로 가능한데 CREATE INDEX 명령어를 사용해 사용자가 생성한 인덱스, 비 고유 인덱스만 삭제가 가능하다.  고유 인덱스를 삭제하려는 경우에는 pk나 uk의 조건을 삭제한 후에 삭제 해야 INDEX삭제가 가능하다.

 

 

위 사진을 보면 첫번째 SELECT문에서 uniqueness컬럼에서는 index의 타입이 고유 인덱스이지, 비고유 인덱스 인지를 확인 할 수  column_positionㅇ에엣컬럼에서는 인덱스의 순서를 확인할 수 있다.

예시중에 score테이블의 인덱스 이름이 중복된 값이 있다. PRIMARY KEY를 사용을 하는데 두개의 FOREIGN KEY를 참조하는 데이터가 그 값이다. 이때 어떤 것을 우선 정렬 할지를 시스템이 판단한다. 그래서 두 데이터의 column_position값이 다른 것이다. 다만 FOREIGN KEY 또한 인덱스를 생성해 주어야 하는데 SNO같은 경우는 UNIQUE INDEX로 지정 되어있기 때문에 굳이 다시한번 인덱스를 설정할 필요 없이 유지하고, CNO에 대해서만 NON UNIQUE INDEX만 지정해 주면 된다.

두번째 SELECT문은 인덱스가 어떤 형식으로 지정되었는지를 확인 할 수 있다. 컬럼으로 지정했는지, 함수로 지정했는지 수식으로 지정했는지를 확인할 때 사용한다.



실습 24

1. 다음 표를 보고 테이블을 생성하는 스크립트를 작성한다.

    - 제약 조건은 반드시 ALTER 문으로 설정한다.

    - 필요한 부분에 사용자 정의 인덱스를 추가한다.

    - 판배 전표에 대한 검색은 대부분 판매일지로 수행해야 하므로 이를 위한 인덱스를 추가한다.

 

 

2. 다음 테이블에 대한 상세 도표를 보고 테이블을 위한 스크립트를 생성한다.

    - 제약 조건은 반드시 ALTER문으로 설정한다.

    - 필요한 인덱스를 추가한다.

    - Emp 테이블에 대해 연봉에 대한 검색이 많이 수행된다. 이를 위한 인덱스를 추가한다.

 

 

반응형

'교육 > SQL' 카테고리의 다른 글

Day 24 (SQL)  (0) 2019.12.19
Day 23 (SQL)  (0) 2019.12.18
Day 21 (SQL)  (0) 2019.12.16
Day 20 (SQL)  (0) 2019.12.13
Day 19 (SQL)  (0) 2019.12.13