• Home
  • About
    • Young's Github Pages photo

      一日不作一日不食

    • About
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

오라클 DBMS 정리 16

12 Nov 2018

Reading time ~2 minutes

오라클 DBMS 정리 16 - 설계 문서작성, ERD, 정규화


이전까지 학습 정리

  • SQL
    • 쿼리문 실행
    • DDL : CREATE, DROP, ALTER, TRUNCATE
      • TABLE, USER, INDEX, SYNONYM, SEQUENCE, VIEW
    • DCL : COMMIT, ROLLBACK, GRANT, REVOKE
      • Transaction, 권한부여
    • DML : INSERT, UPDATE, DELETE, SELECT
  • PL/SQL
    • 쿼리문 실행 + 제어
      • 절차적 언어
    • 기본문법, CURSOR(암시적/명시적), FUNCTION, PROCEDURE, PACKAGE, TRIGGER
      • FUNCTION - 연산
      • PROCEDURE, TRIGGER - 제어 후 쿼리수행
  • 관계형 데이터베이스의 핵심은 테이블 (RDBMS)

테이블 설계서(정의서)

  • RDBMS - Relational DBMS
    • 테이블에 데이터를 저장, 제약사항으로 관계 설정
  • 액셀을 사용, 테이블에 대한 문서를 작성
    • 테이블명(Entity, Relation)
    • 컬럼명(Relation Schema, Attribute) - 영문, 한글
    • 크기
    • NULL 허용여부
    • 제약사항
    • 비고
  • dept, emp 테이블 설계서 작성 예시
    • 부서정보
      • 부서번호, 부서명, 위치
    • 사원정보
      • 사원번호, 사원명, ..
    • 한 엑셀파일에 테이블당 워크시트를 추가
    • 영문 컬럼명 - 물리명
    • 한글 컬럼명 - 논리명
    • DATE 데이터형은 크기를 안주고 비워둠

16-01

16-02

16-03


ERD(Entity Relationship Diagram)

  • 테이블간의 관계를 도식화하여 가독성과 직관성을 향상시킴
  • 테이블간 관계 : 식별 관계, 비식별 관계
    • 식별 관계
      • 부모테이블의 PK를 자식테이블에서 PK로 참조하는 관계
      • 실선
    • 비식별 관계
      • 부모테이블의 PK를 자식테이블에서 일반컬럼으로 참조하는 관계
      • 점선
  • 1:1 관계
    • 부모의 값을 자식에서 무조건 하나만 사용하는 경우
  • 1:N 관계
    • 부모의 값이 자식에서 여러개 사용하는 경우
  • N:M 관계
    • ERD로 표현이되나 실제 테이블에선 사용할 수 없고 테이블을 하나 더 추가하여 구현
    • 부모의 값 여러개를 자식에서 여러개로 사용하는 경우

16-04

  • 테이블 도형 (논리모델, 사람 기준)

16-05

  • 테이블 도형 (물리모델, DBMS 기준)

16-06

  • 비식별 1:N 관계

16-07

  • 식별 1:1 관계

16-08

  • 비식별 1:N 관계, 식별 1:N 관계

16-09


eXERD

16-10

  • ERD 작성용 툴(개인사용은 무료지만 19년부턴 막히는듯..)
    • 논리모드, 물리모드 전환가능
    • 포워드 엔지니어링과 리버스 엔지니어링 지원
      • 포워드 엔지니어링 - 만든 ERD를 DB로 변환하는 것
      • 리버스 엔지니어링 - 만들어진 DB를 ERD로 변환하는 것

정규화 (Normalization)

  • 1970 Edgar F. Codd가 발견
    • BCNF까지 발견
  • 이상현상을 줄이기 위한 방법 - 테이블을 나눠 이상현상을 없앤다.
    • 삽입이상
      • INSERT 시 필요없는 정보가 함께 추가되어야 하는 이상
    • 갱신이상
      • UPDATE 시 일부만 변경되어 데이터가 맞지 않는(data inconsistency)문제가 발생하는 이상
    • 삭제이상
      • 필요없는 값 하나 삭제하려면 행 자체를 삭제해 연쇄삭제가 되는 이상
  • 비정규 테이블
    • 정규화가 되지 않은 테이블
  • 역정규화
    • 진행된 정규화를 이전 상태로 되돌리는 것
  • 1NF-2NF-3NF-BCNF-4NF-5NF
    • 도부이결다조..(시나공)
      • 1NF - 도메인의 원자성이 된 상태
        • 도메인의 원자성
          • 컬럼의 값이 하나로 구성
          • NULL을 허용X(어려움)
          • 중복값을 최소화
      • 2NF - 부분 함수 종속 제거된 상태
      • 3NF - 이행적 함수 종속 제거된 상태
      • BCNF - 후보키가 아닌 결정자가 제거된 상태
      • 4NF - 다치 종속 제거
      • 5NF - 조인 종속 제거
  • 결정자, 종속자
    • 결정자는 키, 종속자는 키로 식별할 수 있는 값
    • 예로 emp테이블의 empno가 결정자
      • empno가 ename, sal, .. 컬럼들을 결정함(결정당하는 녀석들이 종속자)
    • 후보키
      • 일반컬럼이지만 사용하게되면 의미있는 값을 조회할 수 있는 컬럼
  • 완전함수종속
    • 결정자로만 의미있는 데이터를 검색할 수 있는 것
      • 결정자(학번, 과목번호)가 성적을 결정(완전함수종속)
  • 부분함수종속
    • 결정자가 여러컬럼으로 구성될 때 그 중 하나의 컬럼으로만 컬럼을 사용하여 의미있는 레코드를 검색할 수 있는 것
      • 결정자(학번,과목번호) 중 일부인 학번이 지도교수와 학과를 결정(부분함수종속)

16-18


숙제풀이

  • 아래 정보를 가지고 테이블설계서, ERD 작성 후 포워드 엔지니어링까지 생성해보기
    • 회원정보
      • 아이디(PK), 비밀번호(NN), 회원명(NN), 관심언어, 전화번호(UNIQUE), 주소(NN), 입력일(DEFAULT)
    • 게시판
      • 글번호(PK), 제목(NN), 내용(NN), 작성자id(FK), 작성일(DEFUALT), 조회수(DEFAULT 0)
    • 좌석
      • 좌석고유번호(PK), 좌석번호(NN), 커플석(CHECK N,Y 두개의 값만 입력가능, DEFAULT N)
    • 예매
      • 예매고유번호(PK), 예매번호, 좌석고유번호(FK), 회원아이디(FK), 예매일자(DEFAUvLT)
  • 테이블 설계서 user_info

16-11

  • 테이블 설계서 board

16-12

  • 테이블 설계서 seat

16-13

  • 테이블 설계서 reservation

16-14

  • ERD 논리모델

16-15

  • ERD 물리모델

16-16

  • 포워드 엔지니어링 후 insert로 제약사항 테스트


오라클DBMS