공통 코드 설계 하고있는데 도와주세요.. 0 3 3,317

by 설계는어려워 [DB 모델링/설계] 공통코드 코드설계 [2021.02.02 20:29:01]



 

 

단순히 1번사진럼 단순히 직군코드 등을 사용하여 조인을 하려니까 타 코드와 값이 겹쳐 외래키 설정이 불가능합니다.

 

찾아보니까 공통코드라는걸 사용해서 코드 설계하던데 공통코드를 이용해 각 코드에 접근하여 값을 넣고싶은데 저 설계 상태로 할 수 있나요?

 

예를들면 00101 이렇게 입력하면 앞에 001은 기술등급코드라는걸 구분하고 남은 01은 초급으로 배분되고싶습니다.

 

위 설계 상태로 할 수 있다면 예시하나만 보여주시면 감사하겠습니다.

 

그리고 저 설계가 잘못됐으면 잘못이 어떻게 됐는지도 알려주시면 감사합니다..

by 마농 [2021.02.03 08:18:40]

구분코드 로 분류하고
분류에 따른 코드 및 코드명칭을 관리하면 됩니다.
PK 는 (구분코드, 코드) 의 결합키로 하시면 됩니다.
(구분코드, 코드, 코드명)
(001, 01, 초급)
(002, 01, 내부)
(003, 004, 과장)
구분코드에 대한 명칭도 테이블 내에서 관리하면 됩니다.
(000, 000, 공통코드구분)
(000, 001, 기술등급코드)
(000, 002, 직원구분코드)
(000, 003, 직위코드)


by 설계는어려워 [2021.02.03 10:31:58]

 

먼저 이러한 구분코드 테이블을 만든 다음

구분코드 코드설명
001 기술등급코드
002 직위구분코드

 

각 코드의 테이블을 만든 다음 구분코드와 코드를 복합키로 사용하면 무결성문제같은 참조 문제같은 것이 해결된다 라는거 맞을까요?

구분코드 코드 코드명
001 01 초급
002 01 내부

 


by 마농 [2021.02.03 13:26:05]

테이블은 따로 분리해도 되지만.
제가 제시한 대로 구분코드 자체도 공통코드의 일부로 한 테이블로 관리해도 무리 없을 것 같습니다.
공통코드 자체 무결성은 PK 설정하면 되고요.
다만 공통코드를 참조하는 테이블의 참조무결성은 외래키를 설정해야 하는데 이게 불가능합니다.

참조무결성을 해결하려면 공통코드 자체에 구분코드가 포함되어야 하겠네요.
(00101, 초급)
(00201, 내부)
(003004, 과장)

코드를 유니크한 값으로 관리하는 방법(PK 는 코드, 구분코드는 일반항목)
(001, 1, 초급)
(002, 2, 내부)
(003, 3, 과장)

1. 구분코드를 따로 뺄 것인지? (구분코드, 코드) (001, 01, 초급)
- FK 설정 불가
2. 구분코드를 코드에 포함시킬 것인지? (공통코드 = 구분코드 + 코드) (00101, 초급)
- 코드가 길어짐
3. 공통코드를 의미가 없는 시퀀스 형태의 유니크한 코드를 사용하는 방법.
- 코드에 의미를 담을 수 없음. 따라서 코드순 정렬 같은 걸 할 수 없음.
- 코드순 정렬이 필요하다면 정렬용 항목을 별도로 관리하면 됨
4. 아예 코드 테이블을 각각 만들 것인지? 공통코드 미사용.
- 테이블 관리 필요

외래키 설정이 무엇보다 중요하다고 생각하시면 2번,3번,4번 방법으로 가야 하고
외래키 설정을 포기한다고 하면 1번 방법이 나을 듯 하네요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입