android DB 테이블 설계 관련 질문입니다.(꼭 안드로이드 환경이 아니더라도...)
조회수 2375회
안녕하세요. DB 테이블 설계하는데 잘 모르는게 많아서 도움 부탁드립니다.
예를 들어 올림픽 기록 수상 기록을 관리하는 DB를 다음과 같이 만들었습니다. type 열을 둔 이유는 육상 또는 수영 경기별로 자료를 처리해야 하기 때문입니다.
그런데 같은 DB를 다음과 같이 생성할 수도 있습니다. 이 경우에는 각 경기별로 자료를 처리하려면 game 열을 읽어들여서 'athletics_'으로 시작하는지 또는 'swimming_'으로 시작하는지 검사하여 육상 또는 수영 경기별로 자료를 처리할 수 있습니다.
전자는 테이블 열이 하나 더 많은 대신 유형을 구분하는 코드를 넣을 필요가 없고 후자는 유형 구분 코드가 들어가는 대신 테이블 열이 하나 줄어듭니다.
두 테이블 설계 중에 무엇이 바람직한가요?
DB 테이블은 반드시 제3정규형으로 만들어야 하나요?
꼭 제3정규형으로 만들어야 한다면 전자의 테이블에서 name, type, game 열은 각각 이행적 함수 종속이 존재하나요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
DB 설계는 어떤게 더 좋다 이렇게 말하긴 좀 그렇지만, 일반적으로는 후자보다 전자가 더 좋아보입니다. (어디까지나 제 개인적인 생각입니다)
그 이유는 후자와 같이 할 경우에 분야 혹은 종목을 검색 시 like문을 써야할수밖에 없기 때문입니다. (전자와 같이 설계할 경우에는 type, game 각각에 대해 hash를 걸어줄수도 있으니 효율적이죠)
꼭 제3정규형을 따를 필요는 없습니다. 서비스의 유형에 맞는 DB 설계가 가장 좋은 형태입니다. (요세 NoSQL이 성행하는것을 보더라도 알수있죠 ~)
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력