23.04.06 데이터베이스

천용·2023년 4월 6일
0

데이터베이스

목록 보기
2/22
post-thumbnail

부모테이블의 기본키는 자식테이블에 외래키로 전이 되어짐
-> 식별관계와 비식별관계로 나눌 수 있음
식별관계란 부모 테이블의 기본키나 유니크키를 자식 테이블이 자신의 기본키로 사용하는 관계
비식별관계란 부모 테이블의 기본키나 유니크키를 자신의 기본키로 사용하지 않고, 외래키로 사용하는 관계

참조 무결성 제약조건

  • 두 테이블간에 외래키에 의한 참조관계에 있을 때 두 테이블간 데이터 불일치가 발생하는 상황이 되면 DBMS는 다음과 같은 조치를 취할 수 있음
    -> 제한(restrict), 연쇄(cascade), 널 값으로 대체(nullify)

  • ex)부서테이블의 첫 번째 튜플을 삭제할 때
    ->제한(restrict): 삭제하려는 튜플의 부서번호 값을 사원테이블에서 가지고 있는 튜플이 있으므로 삭제연산을 거절
    ->연쇄(cascade): Delete cascade ↔ Update cascadem, 삭제된 부서번호 값을 갖는 사원테이블의 튜플도 함께 삭제
    ->널 값으로 대체(nullify): 삭제연산을 수행한 뒤 삭제된 부서번호 값을 갖는 사원테이블의 튜플에서 부서번호를 null값으로 대체

데이터 무결성

참조 무결성

  • 자식테이블에 데이터를 입력하거나 수정할 때 부모테이블 검증
  • 부모테이블의 데이터를 수정하거나 삭제할 때 자식테이블 검증

개체 무결성

  • 릴레이션내에 오직 하나의 값만 존재 해야하고 기본키는 null값을 가져서는 안 됨

도메인 무결성

  • 각 속성의 도메인에 지정된 값만을 가져야 하는 조건

권한부여

뷰 생성

CREATE VIEW VIEW_EMP2
AS
SELECT EMPID, NAME, DEPT, JOB
FROM EMP;

데이터검색

뷰1에서 고용일이 2000년 이후이고 급여가 350만원 이상인 사원을 조회

SELECT NAME AS 사원명, SALARY AS 급여, HIRE_DATE AS 고용일
FROM VIEW_EMP1
WHERE SALARY > 350 AND HIRE_DATE > '00/01/01';

> 뷰2에서 업무가 특수영업인 사원을 조회

SELECT NAME AS 사원명, JOB AS 업무내용
FROM VIEW_EMP2
WHERE JOB = '특수영업';

> 뷰3에서 생일이 1999년도인 사원을 조회

SELECT NAME AS 사원명, BIRTHDAY AS 생일
FROM VIEW_EMP3
WHERE BIRTHDAY LIKE '1999%';

SELECT NAME AS 사원명, BIRTHDAY AS 생일
FROM VIEW_EMP3
WHERE SUBSTR(BIRTHDAY,1,4) = '1999'; 

> 뷰1에서 인원수, 평균급여, 최저급여, 최고급여를 조회

SELECT COUNT(*) 고용인원수, AVG(SALARY) 평균급여, MAX(SALARY) 최고급여, MIN(SALARY) 최저급여
FROM VIEW_EMP1;

뷰2에서 업무가 '품'이 들어간 사원을 조회

SELECT NAME AS 사원명, JOB 업무명
FROM VIEW_EMP2
WHERE JOB LIKE '%품%';

뷰3에서 95~99사이에 태어난 사원수와 총예산을 표시(예산100만원)

SELECT COUNT(*) 사원수, COUNT(*) * 100 총예산
FROM EMP
WHERE SUBSTR(BIRTHDAY,1,4) > '1994' AND SUBSTR(BIRTHDAY,1,4) < '2000';
profile
성장하는 개발자가 되자

0개의 댓글