- 정의
하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성을 의미
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 |