DB 정규화 질문드립니다.... 0 6 245

by saluki [DB 모델링/설계] [2020.10.05 19:26:00]


재료.PNG (66,393Bytes)

레시피 관리 DB를 만들고있는 도중 레시피 테이블에 재료라는 컬럼이있습니다 이 재료 컬럼은 레시피의 재료를 저장하는 컬럼인데 여기서 재료에 다중값이 들어갑니다...

ex) 김치볶음밥 레시피 -> 01,02,03 이런식으로 다중 값이 들어갑니다 이 부분은 안좋은 설계 방법이라고 하셔서 이 부분을 해결할려면 정규화 다른 엔티티를 나눠야 하는데 도저히 감이오지 않습니다 어떤 식으로 나누면 좋겠습니까;;

재료 테이블에는 재료 코드로 재료를 구분합니다 

ex) 01 김치 02 햄 03 참기름

 

by 마농 [2020.10.06 07:42:37]

[레시피_재료] 부분이 [레시피] 와 [재료] 를 이어주는 맵핑테이블로 잘 설계되어 있네요.
[레시피] 테이블에 [재료] 항목은 불필요 하겠네요.


by saluki [2020.10.06 12:42:23]

아직 배우고 있는 입장이라서 질문 드리겠습니다 재료 항목이 불필요한 이유를 알고싶습니다 혹시 테이블에 불필요한 항목을 알 수 있는 방법이 있겠습니까?


by 우주민 [2020.10.06 13:03:54]

레시피 테이블의 재료는 레시피_재료 테이블을 이용해서 재료 정보를 확인 할 수 있으므로 중복된 내용이 됩니다.

다만 대표재료 같은 특정된 값을 넣기위함 이라면 필요할 수도 있겠네요.


by saluki [2020.10.06 19:16:04]

@우주민 감사합니다


by 마농 [2020.10.06 13:58:25]

[레시피_재료] 테이블이 [레시피] 와 [재료] 간의 관계를 나타내는 역할을 해주고 있으므로
같은 역할을 하는 [레시피] 테이블에 [재료] 항목을 둘 필요는 없죠.
역할이 중복되고, 한컬럼에 여러 값을 넣는 것도 정규화 위배입니다.
원래는 [레시피] 테이블에 [재료] 항목만 있고 [레시피_재료] 테이블이 없는 초기 상태에서
정규화를 통해 [레시피_재료] 테이블을 만들고 [레시피] 테이블에 [재료] 항목은 없애는 거죠.


by saluki [2020.10.06 19:15:42]

이해되었습니다 정말 감사합니다!

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