본문 바로가기
내가 보려고 정리한 DB

[데이터베이스] SEQUENCE - 1

by nacastle 2020. 5. 12.

1. 식별자에 대해서 (영상 참고, 여기글 참고)

 

- 정의

 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성을 의미

cf) 일단 엔터티 = 테이블 (직원관리 테이블), 속성 = 열 헤더(사원번호, 이름, 부서번호, 직급) 라고 인식하자 (인스턴스 = 엔터티 내 데이터 값...ex. 1001,1002,1003) (참고)

cf) 엔터티는 인스턴스의 집합

 

- 특징(기본키 기준)

  • 유일성: 기본키에 의해 엔터티 내에 모든 인스턴스들을 유일하게 구분한다.
  • 최소성: 기본키를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
  • 불변성: 기본키가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 한다.
  • 존재성: 기본키가 지정되면 반드시 데이터 값이 존재해야한다.

- 종류

  • 후보키: 유일성과 최소성을 만족하는 키 (기본키의 후보가 되는 키이다.)
  • 기본키(=주식별자): 후보키 중에서 엔터티를 가장 적절히 대표할 수 있는 키
  • 대체키: 여러 후보키 중 기본키를 제외한 나머지 키

 

 

- 그림 설명

 

                                                   [직원관리 테이블]

사원번호  이메일 이름 부서번호 직급
1001 a@gmail.com 오상식 10 차장
1002 b@naver.com 안영이 20 사원
1003 c@hanmail.net 한석율 30 사원
1004 d@naver.com 김동식 10 대리
1005 e@gmail.com 장그래 10 사원

-특징

유일성: [사원번호]를 기본키라 가정했을 때, 서로간 중복되는 [사원번호]를 가진 직원은 없어야 한다.

최소성: [사원번호]만으로도 유일성이 지켜지는데, 불필요하게 2개 조합인 [사원번호+이메일]을 식별자로 지정하는 것은 부적절하다. 

불변성: [사원번호]를 기본키로 정했다면, 그 속성 내 값들은 변하면 안된다.

존재성: [사원번호]를 기본키로 정했다면, 모든 직원들에게 반드시 [사원번호]를 부여해야 한다.(모든 직원은 [사원번호]를 가지고 있어야 한다.)

 

-종류

후보키: [사원번호], [이메일], [이름]

(부서번호와 직급은 유일성을 만족하지 않기에 후보키에서 탈락)

기본키: [사원번호]

(이메일, 이름은 추후에 중복이 가능할 수 있다는 판단하에)

대체키: [이메일], [이름]

 

 

2번 과제

 

--GROUP BY 노가다 과제
--답 1
SELECT SUM(DECODE(DEPTNO,10,1,0)) AS "10번 부서", SUM(DECODE(DEPTNO,20,1,0)) AS "20번 부서", SUM(DECODE(DEPTNO,30,1,0)) AS "30번 부서" FROM EMP;
GROUP BY NULL;

SELECT SUM(DECODE((DEPTNO),10,1,0)) FROM EMP GROUP BY DEPTNO;

--답 2
SELECT SUM(DECODE((DEPTNO),10,COUNT(*),0)) AS "10번 부서", sum(DECODE((DEPTNO),20,COUNT(*),0)) AS "20번 부서", sum(DECODE((DEPTNO),30,COUNT(*),0)) AS "30번 부서" FROM EMP GROUP BY DEPTNO;
--순서: FROM > GROUP BY > DECODE > COUNT > SUM

반응형

'내가 보려고 정리한 DB' 카테고리의 다른 글

[데이터베이스] 서브쿼리  (0) 2020.05.13
[데이터베이스] JOIN - 1  (0) 2020.05.13
[데이터베이스] SELECT - 3  (0) 2020.05.11
[데이터베이스] SELECT - 2  (0) 2020.05.08
[데이터베이스] SELECT - 1  (0) 2020.05.07