보통 두 테이블의 종속된 관계를 지정 시, seq값을 지정하는 경우가 많다.
하지만, 여기서 고려해볼 사항이 seq 값을 종속되는 참조키로 지정되게 되는 경우 정보변경에 자유롭지 못하게 된다.
한번 예를 들어보자
대상자 테이블과 발령 테이블의 관계는 1:n의 관계를 갖고 있다고 가정하자.
대상자테이블의 seq를 발령 테이블에 참조키로 갖고 있다면,
대상자테이블의 A대상자가 B대상자로 바뀌었다면 A대상자의 seq에 맵핑된 발령데이터가 B대상자로 변경이 될 수있다.
이렇게 되면 A대상자의 발령정보가 B대상자로 넘어가기 때문에 주의하여 설계가 필요하다.
위 문제를 해결하기 위해서는,
참조키를 seq로 잡는것이 아닌 사번으로 잡거나, 애초에 pk를 seq값이 아닌 사번으로 잡아두면 문제되지 않는다.
사실상 대상자의 고유값은 사번이라서 실제로는 문제되진않지만, 설계 시 무턱대고 seq 컬럼을 추가하는 경우가 있기 때문에 이런부분을 고려하여 설계가 필요하다.
또한, 대상자테이블의 대상자가 삭제되었다면, 발령테이블에 관계가 끊겨 dummy데이터로 남게되는데 이 때
관리자가 다시 대상자 업로드를하면 seq값으로 되어있을경우 새로운 seq가 생성되기때문에 업로드하여도 맵핑이 되지않습니다. 그래서 다른 변하지하는 고유키를 사용하여 두대상자를 맵핑해주고 seq는 식별용도로만 사용해주는것이 관리면에서 효율적입니다.
'DB' 카테고리의 다른 글
테이블의 default값을 고려하라 (0) | 2020.03.10 |
---|---|
테이블 분리해야할까? 합쳐야할까? (0) | 2020.03.10 |
OLTP & OLAP (0) | 2019.11.19 |
ETL(Extract, Transform, Load) (0) | 2019.11.19 |
RDBMS 비교 (0) | 2019.11.12 |