android DB 테이블 설계 관련 질문입니다.(꼭 안드로이드 환경이 아니더라도...)

조회수 2372회

안녕하세요. DB 테이블 설계하는데 잘 모르는게 많아서 도움 부탁드립니다.

예를 들어 올림픽 기록 수상 기록을 관리하는 DB를 다음과 같이 만들었습니다. type 열을 둔 이유는 육상 또는 수영 경기별로 자료를 처리해야 하기 때문입니다.

이미지

그런데 같은 DB를 다음과 같이 생성할 수도 있습니다. 이 경우에는 각 경기별로 자료를 처리하려면 game 열을 읽어들여서 'athletics_'으로 시작하는지 또는 'swimming_'으로 시작하는지 검사하여 육상 또는 수영 경기별로 자료를 처리할 수 있습니다.

이미지

전자는 테이블 열이 하나 더 많은 대신 유형을 구분하는 코드를 넣을 필요가 없고 후자는 유형 구분 코드가 들어가는 대신 테이블 열이 하나 줄어듭니다.

  1. 두 테이블 설계 중에 무엇이 바람직한가요?

  2. DB 테이블은 반드시 제3정규형으로 만들어야 하나요?

  3. 꼭 제3정규형으로 만들어야 한다면 전자의 테이블에서 name, type, game 열은 각각 이행적 함수 종속이 존재하나요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • DB 설계는 어떤게 더 좋다 이렇게 말하긴 좀 그렇지만, 일반적으로는 후자보다 전자가 더 좋아보입니다. (어디까지나 제 개인적인 생각입니다)

    그 이유는 후자와 같이 할 경우에 분야 혹은 종목을 검색 시 like문을 써야할수밖에 없기 때문입니다. (전자와 같이 설계할 경우에는 type, game 각각에 대해 hash를 걸어줄수도 있으니 효율적이죠)

    꼭 제3정규형을 따를 필요는 없습니다. 서비스의 유형에 맞는 DB 설계가 가장 좋은 형태입니다. (요세 NoSQL이 성행하는것을 보더라도 알수있죠 ~)

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)