학생 테이블 인스턴스 & 예제 데이타

 

테이블 인스턴스(table instance)

 

-데이터베이스 설계시에 테이블의 구조와 칼럼의 특성을 알기 쉽게 요약한 내용

-테이블 인스턴스는 테이블의 칼럼 이름, 데이터 타입, 키 종류, NULL이나 중복 값의 허용 여부, 외래 키 그리고 칼럼에 대한 설명으로 구성

 

 

 

 

예제 E/R 다이어그램

 

 

http://yjan.tistory.com/entry/Mater-SQL-샘플-테이블-만들기

 

CREATE TABLE EMPLOYEE(

   EMP_ID          NAMBER(5)   NOT NULL,

   FNAME           VARCHAR2(20),

   LNAME           VATCHAR2(20),

   DEPT_ID          NUMBER(5)  NOT NULL,

   MANAGER_EMP_ID   NUMBER(5),

   SALARY          NUMBER(5),

   HIRE_DATE      DATE,

   JOB_ID             NUMBER(3),

   CONSTRAINT employee_pk PRIMARY KEY(EMP_ID)

);

 

CREATE TABLE EMPLOTEE_EXPENSE(

   EMP_ID            NUMBER(5),

   YEAR               NUMBER(4),

   MONTH             NUMBER(2),

   EXPENSE_CLAIM   NUMBER(7,2),

   APPROVED_AMT    NUMBER(7,2),

   PAID_DATE   DATE

);

 

CREATE TABLE DEPARTMENT(

   DEPT_ID   NUMBER(5)   NOT NULL,

   NAME     VARCHAR2(20),

   LOCATION_ID NUMBER(3),

   CONSTRAINT department_pk PRIMARY KEY(DEPT_ID)

);

 

 

 

실습 테이블 데이터 생성

 

CREATE TABLE DEPT

    (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,

     DNAME BARCHAR2(14), LOC VARCHAR2(13) );

CREATE TABLE EMP

     (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,

      ENAME VARCHAR2(10),

      JOB VARCHAR2(9),

      MGR NUMBER(4),

      HIREDATE DATE,

      SAL NUMBER(7,2),

      COMM NUMBER(7,2),

      DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);

CREATE TABLE BONUS

     (ENAME VARCHAR2(10),

      JOB VARCHAR2(9),

      SAL NUMBER,

      COMM NUMBER);

CREATE TABLE SALGRADE

     (GRADE NUMBER,

      LOSAL NUMBER,

      HISAL NUMBER);

 

성능고려 SQL 작성 프로세스

 

 

최적의 성능을 위한 SQL작성시 고려사항

 

*집합적 사고

*인덱스(Index(집합적 사고 및 인덱스 정책에 대한 부분))

*조인방식(Join Method)

*조인순서(Join Order)

*조인 연결고리(Join Link)

*인라인 뷰(Inline View)

*서브쿼리(Subquery)

*실행계획(Execution Plan)

*저장형 함수(Stored Procedure)

*스칼라 서브쿼리(Scalar Subquery)

 

고려사항6. 실행계획 확인

 

*실행계획을 확인해야 하는 이유

-SQL 작성시 자신이 예상하였던 실행계획과 옵티마이저가 생성한 실행계획과의 비교

-옵티마이저가 작성자가 생각했던 최적의 처리경로와 같이 실행계획을 수립했는지에 대한 판단이 필요

-옵티마이저의 한계로 인해 사용자가 생각하는 논리적인 판단과의 차이 확인

 

최적의 SQL로 보아도 무방함

사용자가 생각했던 최적의 처리 경로 = 옵티마이저가 생각한 최적의 처리 경로

 

사용자의 논리적 판단과 옵티마이저의 논리적 판단을 비교할 필요가 있음

사용자가 생각했던 최적의 처리 경로 ≠ 옵티마이저가 생각한 최적의 처리 경로

 

+ Recent posts