데이터베이스 모델링
0. 데이터베이스 설계과정
① 개념적 설계
② 논리적 설계
③ 물리적 설계
1. 요구사항 분석에서 기술된 명사들만 도출해낸다.
요구사항 : 사원은 사원 번호를 가진다.
사원이 입사할 때는 입사일 0시 0분 0초를 입사시가능로 정한다.
사원 정보는 ( 사원이름, 직급, 상사, 입사일, 급여, 커미션, 소속 부서) 를 입력한다.
부서 정보는
10번 부서는 부서이름이 이고 부서위치는 이다.
20번 부서는 부서이름이 이고 부서위치는 이다.
30번 부서는 부서이름이 이고 부서위치는 이다.
40번 부서는 부서이름이 이고 부서위치는 이다.
사원은 오직 하나의 부서에 반드시 소속되어야 한다.
사원의 직급은 사장, 부장, 과장, 대리, 주임, 평사원 을 사용한다.
급여등급은 최소급여 700이상 최대급여 1200은 1등급
......
3001이상 최대급여 9999이하는 5등급이다.
보너스 지급은 ( 지급대상의 이름, 직급, 급여, 커미션 ) 을 기록하기로한다.
🔻🔻🔻🔻🔻🔻🔻🔻 명사만 체크해보기🔻🔻🔻🔻🔻🔻🔻🔻
사원, 사원번호, 입사, 입사일, 입사시간, 사원정보, 이름, 직급, 상사, 입사일, 급여, 커미션, 소속부서, 부서정보, 10번,20번,30번,40번,부서이름,부서위치,사장, 부장, 과장, 대리, 주임, 평사원, 급여등급, 최소급여, 최대급여, 1등급,2등급,...,5등급,보너스
🔻🔻🔻🔻🔻🔻🔻🔻 entity로 쓸수있는 것들 체크해보기🔻🔻🔻🔻🔻🔻🔻🔻
사원번호, 부서정보, 직급, 급여등급,보너스
2. ER Model 을 만든다. (정규화 - 제1 정규화, 제2 정규화, 제3 정규화)

3. ER Diagram 작성
PK : 기본키 , 테이블마다 한 개씩
CK : 오로지 정해놓은 데이터만 입력 가능

4. 테이블 명세서
5. 테이블 만들기 (DDL)
SAL_GRADE TABLE
-- CREATE SAL_GRADE TABLE
CREATE TABLE SAL_GRADE(
GRADE NUMBER(2) -- 선언과 동시에 제약조건
CONSTRAINT SALGRD_GRD_PK PRIMARY KEY,
LOSAL NUMBER(10),
HISAL NUMBER(10),
CONSTRAINT SALGRD_LO_UK UNIQUE(LOSAL)
-- 따로 제약조건
);
-- LOSAL NOT NULL
ALTER TABLE SAL_GRADE
MODIFY LOSAL
CONSTRAINT SALGRD_LO_NN NOT NULL;
-- HISAL UNIQUE 제약조건 추가
ALTER TABLE SAL_GRADE
ADD CONSTRAINT SALGRD_HI_UK UNIQUE(HISAL);
-----------> 한번에 하나씩밖에 못함
K_DEPT TABLE
-- CREATE K_DEPT TABLE
CREATE TABLE K_DEPT(
DEPTNO NUMBER(2)
CONSTRAINT KDEPT_NO_PK PRIMARY KEY,
DNAME VARCHAR2(10 CHAR)
CONSTRAINT KDEPT_NAME_NN NOT NULL,
LOC VARCHAR2(10 CHAR)
CONSTRAINT KDEPT_LOC_NN NOT NULL
);
K_EMP TABLE
-- CREATE K_EMP TABLE
CREATE TABLE K_EMP(
EMPNO NUMBER(4)
CONSTRAINT KEMP_NO_PK PRIMARY KEY,
ENAME VARCHAR2(10 CHAR)
CONSTRAINT KEMP_NAME_NN NOT NULL,
JOB VARCHAR2(10 CHAR)
CONSTRAINT KEMP_JOB_NN NOT NULL
CONSTRAINT KEMP_JOB_CK
CHECK(JOB IN ('사장',' 부장','과장',
'대리',' 주임', '평사원')),
MGR NUMBER(4)
CONSTRAINT KEMP_MGR_FK REFERENCES K_EMP(EMPNO),
HIREDATE DATE DEFAULT SYSDATE
CONSTRAINT KEMP_HDATE_NN NOT NULL,
SAL NUMBER(10)
CONSTRAINT KEMP_SAL_NN NOT NULL,
COMM NUMBER(10),
DEPTNO NUMBER(2)
CONSTRAINT KEMP_DNO_NN NOT NULL,
CONSTRAINT KEMP_DNO_FK FOREIGN KEY(DEPTNO)
REFERENCES K_DEPT(DEPTNO)
-- 나중에 FK 추가하기
);
6. DML (INSERT)
INSERT INTO SAL_GRADE VALUES(1,2000000,3000000);
INSERT INTO SAL_GRADE VALUES(2,3000001,5000000);
INSERT INTO SAL_GRADE VALUES(3,5000001,7000000);
INSERT INTO SAL_GRADE VALUES(4,7000001,10000000);
INSERT INTO SAL_GRADE VALUES(5,10000001,NULL);
INSERT INTO K_EMP(EMPNO,ENAME,JOB,HIREDATE,SAL,COMM,DEPTNO)
VALUES(1001,'메롱','사장',TRUNC(SYSDATE,'DD'),2000001,1,10);
INSERT INTO K_EMP(EMPNO,ENAME,JOB,HIREDATE,SAL,COMM,DEPTNO)
VALUES(1002,'안오미','평사원',TRUNC(SYSDATE,'DD'),10000001,10000000,20);
INSERT INTO K_EMP(EMPNO,ENAME,JOB,HIREDATE,SAL,COMM,DEPTNO)
VALUES(1003,'신형만','과장',TRUNC(SYSDATE,'DD'),8000001,200000,30);
--MGR은 귀찮아서 따로 추가안함
기타 참고
oracle 이사용하는포트 1521