Ramgee Da
44
2021-07-19 21:27:04 작성 2021-07-19 21:28:33 수정됨
3
81

DB 질문드립니다...


위와 같은 테이블이 있다고 생각해봅시다. 

위에서, 이름 및 핸드폰 기종은 중복되니.. 이 테이블을 대표하는 컬럼은 핸드폰 시리얼입니다. 

그런데, 핸드폰 시리얼이 기종마다 길이가 다르므로, varchar가 될것입니다. 

(일단 pk는 auto increment라고 가정합니다) 

위 테이블은 각 핸드폰에 깔린 어플입니다. 이 테이블은 핸드폰 시리얼을  다:1 로 참조합니다. 

근데 여기서, FK가 varchar가 되어도 문제가 없을까요?

그리고 각 행을 구분할 수 있도록 새로운 컬럼을 만들 수 있는 팁이 있을까요?  (자식 테이블이 하나 더있어 unique값이 필요한 상황이라고 가정합니다.)  


사실 선박 관련 db를 짜는데, 레거시 db가 좀 난잡합니다. 테이블을 대표하는 필드가 모호한데다가

선박 -  기계 - 기부속 - 기부속 정비 정보 - 기부속 정비 완료 일지 -...  이렇게 자식에 자식에 자식으로 꼬리를 물고, 복합키가 계속 하나씩 붙어서 뭐 하나를 바꾸기가 힘드네요.. 여튼 푸념이었습니다.. 



0
  • 답변 3

  • Ramgee Da
    44
    2021-07-19 21:29:55

    auto increment id나 uuid를 FK로 사용하는건 아무래도 유지보수에 안좋을까요?? 

    초보 개발자라.. 도움이 필요합니다 ㅜㅜ 비슷한걸루 계속 질문중인데, 사실 답변도 안달리고, 해결도 못해서요..

  • 쿠잉
    3k
    2021-07-19 21:59:05
    일단 pk가 auto_increment id 는 보통 많이 쓰는 케이스 입니다.
  • 콘푸로스트
    2k
    2021-07-19 22:09:17

    FK가 varchar2던 number던 포맷의 문제는 없습니다.

    FK는 그 목적성에 의미를 둡니다.

    (실제 설계시에는 논리에는 표기를 하나, 물리적 DB에는 관리하기 까다로워서 안쓰는 경우가 많습니다)


    각 행을 구분할 수 있는 새로운 컬럼에 대한 팁은 그때 상황마다 다릅니다.

    pk으면 굳이 만들 필요는 없지만, 경우에 따라서는 의미없는 +1 증가 시퀀스로 만들어도 되겠죠.

    날짜 + 1씩 올라가는 경우도 있고요(20210719-00001)


    테이블을 대표하는 필드는 당연히 pk일테고, 보통 not null 필드, 그리고 컬럼 순서대로 중요도를 가지고 있습니다.

    (pk가 맨 뒤에 있는 경우나 유저 테이블에 성명, 전화번호 필드가 맨 뒤에 있는 경우는 보통 없죠.)


    보통 키값은 의미있는 코드로 만들기도 하지만, 제일 심플한 것은 +1 시퀀스입니다.

    저 역시 많이 사용하고 있고요.

  • 로그인을 하시면 답변을 등록할 수 있습니다.