[번외] 업무관점의 데이터베이스

테이블 종류에 대한 출처

테이블의 종류

모든 업무 프로세스는 주체, 행위, 대상으로 집약된다
(주체는 인물주체와 사물주체로 세분된다)

  • Master Table(주체)

    • 업무의 핵심 개체인, 주체에 대한 기본적인 정보를 담고 있다.

    • 필드 수가 많아 1행 당 사이즈가 크다

    • History Table과 같은 Child Table이 부속되어 있다
      (Mater Table의 변경 이력은 History Table에 저장된다)

    • 가장 최신의 상태와 속성 정보를 유지, 관리한다

    • 속성은 가변 속성과 불변 속성으로 분류할 수 있는데, 이러한 가변 속성을 관리하기 위한 테이블이 History Table이다.

  • Transactional Table(행위)

    • 원칙적으로 등록만 할 수 있고, 수정은 불가능하다
      (즉, History Table을 따로 두지 않는다)

    ex) 어떤 거래를 취소한다고 할 때, 해당 거래를 삭제하는 게 아니라 해당 거래가 취소되었다는 기록을 등록하는 것이다

  • History Table(대상)

    • Mater Table의 변경된 상태 속성 정보를 보관한다

    • 구조에 따른 분류

      • Mater Table의 외부에 Mater Table과 동일한 구조를 가지고 있는 Outer History Table의 형태를 가질 수도 있고,

      • Master Table의 내부에 상위키(upper key) 칼럼을 포함시켜 내부순환(recursive) 구조를 가진 Inner History Table의 형태를 가질 수도 있으며,

      • Mater Table의 중요 상태정보만을 관리하는(즉, 일부 칼럼만 관리하는) Hot-Item History Table 구조로 구성될 수도 있다

    • 데이터의 성격에 따른 분류

      • Line History Table

        변경된 상태정보를 시작 시점 ~ 종료 시점의 구간으로 하는 형태

      • Point History Table

        변경 시점을 기준으로 하는 형태

  • Code Table

    • Key, Value의 쌍으로 구성된 집합

    • 타입스크립트의 변수화의 개념이 있는 듯...?

    코드코드명
    100대한민국
    200미국

식별관계와 비식별관계

출처

  • 식별관계

    • 어떤 테이블의 기본키가 다른 테이블의 외래키이자 기본키로 사용될 때, 이를 식별관계라 한다.

      ex) 테이블 A, 테이블 B가 있을 때, 이 둘의 기본키를 외래키로 삼는 테이블 C가 있을 때 이 역시 식별관계이다.

    • 이러한 식별 관계는 ERD에서 실선으로 표현하다

    • 이런 식별 관계 하에서 참조되는 테이블을 강한 개체, 참조하는 테이블을 약한 개체라 한다.

  • 비식별관계

    • 어떤 테이블의 기본키가 다른 테이블의 외래키로 사용되었지만, 그 외래키를 기본키로 사용하지 않는 관계이다.

      eX) 테이블 A, 테이블 B가 있을 때, 테이블 C가 이 둘의 기본키를 외래키로 삼았지만 별도의 기본키를 설정한 경우
      (이 때의 별도의 기본키를 인조키라고 한다)

    • 이러한 비식별 관계는 ERD에서 점선으로 표현한다

외래키로 참조되는 테이블의 기본키가 변경되는 경우도 발생할 수 있으므로 가능하면 인조키를 기본키로 사용하는 비식별관계가 권장된다


아래의 Synonym 내용 출처

  • Synonym

    • 테이블의 별칭을 짓는 역할

    • 보통 다른 유저의 객체(테이블, 뷰, 프로시저?, 함수?, 패키지?, 시퀀스? 등)를 참조할 때 사용

    • Synonym을 사용하면 다른 유저의 객체를 사용할 때 유저의 이름과 객체의 실제이름을 사용하지 않기에 데이터베이스의 보안이 향상된다
      (그런데 애초에 다른 계정에 있는 테이블을 갖다 쓸 일이 잘 없다고 한다)

CREATE (OR REPLACE) [PUBLIC] SYNONYM 별칭 FOR 유저이름.테이블이름;
-- PUBLIC은 모든 사용자에게 접근 권한 허용
-- PUBLIC을 선언해주지 않으면 기본적으로 PRIVATE으로 간주

-- 어떤 글에는 OR REPLACE가 있고, 어떤 글에는 없고 뭘까
DROP SYNONYM 별칭;

synonym은 GRANT문 정리할 때 보충!

아래의 Sequnece 내용 출처

  • Sequence

    • 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체

    • 보통 PK에 중복값을 방지하기 위한 용도로 사용

CREATE SEQUENCE 시퀀스 별칭
INCREMENT BY 정수 
-- 디폴트는 1
START WITH 기준값 
-- 증가일 때의 디폴트는 MINVALUE, 감소일 때의 디폴트는 MAXVALUE
NOMINVALUE | MINVALUE 최소값
-- NOMINVALUE : 디폴트 값 설정, 증가일 때 1, 감소일 때 -1028(???)
-- MINVALUE : 최소값 설정, 기준값 이하이며 MAXVALUE 미만이어야 한다
NOMAXVALUE | MAXVALUE 최대값
-- NOMAXVALUE : 디폴트 값 설정, 감소일 때 1027(???), 증가일 때 -1(???)
-- MAXVALUE : 최대값 설정, 기준값 이상이며 MINVALUE 초과여야 한다
CYCLE | NOCYCLE
-- CYCLE : 최대값에 도달하면 최소값부터 다시 시작
-- NOCYCLE : 최대값 도달시 시퀀스 생성 중지
CACHE | NOCACHE
-- CACHE : 메모리에 시퀀스 값을 미리 할당(???)
-- NOCACHE : 메모리에 시퀀스 값을 할당하지 않음(???)
SELECT 시퀀스 별칭 FROM DUAL; 
-- 해당 시퀀스 값 조회

SELECT * FROM USER_SEQUENCES;
-- 전체 시퀀스 조회
ALTER SEQUENCE 시퀀스 별칭
INCREMENT BY 정수
NOMINVALUE | MINVALUE 최소값
NOMAXVALUE | MAXVALUE 최대값
CYCLE | NOCYCLE
CACHE | NOCACHE

시퀀스는 DDL문이기에 ALTER를 사용하여 수정 가능

  • 기준값을 수정 불가

  • 증가일 경우, 현재 들어있는 값들보다 높은 최소값 설정 불가

  • 감소일 경우, 현재 들어있는 값들보다 낮은 최대값 설정 불가

DROP SEQUENCE 시퀀스 별칭;

좋은 웹페이지 즐겨찾기