[번외] 업무관점의 데이터베이스
테이블의 종류
모든 업무 프로세스는 주체, 행위, 대상으로 집약된다
(주체는 인물주체와 사물주체로 세분된다)
-
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에서 점선으로 표현한다
식별관계
-
어떤 테이블의 기본키가 다른 테이블의 외래키이자 기본키로 사용될 때, 이를 식별관계라 한다.
ex) 테이블 A, 테이블 B가 있을 때, 이 둘의 기본키를 외래키로 삼는 테이블 C가 있을 때 이 역시 식별관계이다.
-
이러한 식별 관계는 ERD에서 실선으로 표현하다
-
이런 식별 관계 하에서 참조되는 테이블을 강한 개체, 참조하는 테이블을 약한 개체라 한다.
비식별관계
-
어떤 테이블의 기본키가 다른 테이블의 외래키로 사용되었지만, 그 외래키를 기본키로 사용하지 않는 관계이다.
eX) 테이블 A, 테이블 B가 있을 때, 테이블 C가 이 둘의 기본키를 외래키로 삼았지만 별도의 기본키를 설정한 경우
(이 때의 별도의 기본키를 인조키라고 한다) -
이러한 비식별 관계는 ERD에서 점선으로 표현한다
외래키로 참조되는 테이블의 기본키가 변경되는 경우도 발생할 수 있으므로 가능하면 인조키를 기본키로 사용하는 비식별관계가 권장된다
-
Synonym
-
테이블의 별칭을 짓는 역할
-
보통 다른 유저의 객체(테이블, 뷰, 프로시저?, 함수?, 패키지?, 시퀀스? 등)를 참조할 때 사용
-
Synonym을 사용하면 다른 유저의 객체를 사용할 때 유저의 이름과 객체의 실제이름을 사용하지 않기에 데이터베이스의 보안이 향상된다
(그런데 애초에 다른 계정에 있는 테이블을 갖다 쓸 일이 잘 없다고 한다)
-
CREATE (OR REPLACE) [PUBLIC] SYNONYM 별칭 FOR 유저이름.테이블이름;
-- PUBLIC은 모든 사용자에게 접근 권한 허용
-- PUBLIC을 선언해주지 않으면 기본적으로 PRIVATE으로 간주
-- 어떤 글에는 OR REPLACE가 있고, 어떤 글에는 없고 뭘까
DROP SYNONYM 별칭;
synonym은 GRANT문 정리할 때 보충!
-
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 시퀀스 별칭;
Author And Source
이 문제에 관하여([번외] 업무관점의 데이터베이스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@woobuntu/번외-업무관점의-데이터베이스저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)