PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2022/12/17 11:30:12
Name 오렌지 태양 아래
File #1 제목_없음.png (11.6 KB), Download : 106
Subject [질문] DB 설계 연습중인데 뇌정지가 와서 질문드립니다


요즘 DB를 배워볼까 해서 오라클도 배우고

지금은 설계 연습을 하고 있는데

제 능지가 처참함을 느끼고 있습....크크

뇌정지가 와서...

제가 도시락 관련 컨셉으로 DB를 설계를 연습하고 있는데요

각 도시락에 들어갈 메뉴를 밥 국 및 반찬 조합을 구현하고 싶은데 지금 저기서 계속 선 그었다 지웠다 반복하고 있습니다

일단 밥,국은 각 도시락에 1개씩 들어간다고 가정하고 1:N으로 묶었구요

문제는 반찬입니다...

1개가 들어갈수도, 2개가 들어갈 수도, 아무튼 N개를 취해서 조합을 만들어 PK부여하고 메뉴구성에 넣고 싶은데

지금 제가 첨부한 사진이 맞나요???

뭔가 틀린 거 같은 느낌은 강하게 드는데

정답을 못찾겠습니다....

어떻게 설계하면 될까요??

고수님들 답변 부탁드립니다 ㅠㅠㅠ

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
프즈히
22/12/17 12:35
수정 아이콘
저도 db 전문가는 아닌데 제 생각에는 반찬구성 테이블에 반찬구성코드가 유니크 하지 않으면 될 것 같습니다.

반찬구성테이블
컬럼 : 반찬구성코드, 반찬 코드

데이터 예

코드1, 김치
코드1, 나물
코드2, 소시지
코드2, 김치
코드2, 나믈
코드3, 나물

메뉴구성테이블
메뉴구성코드1(유니크), 밥1,국1, 반찬구성코드2

이렇게 해 두면
메뉴1을 불러오면 밥1, 국1, 소시지, 김치, 나물 이 조합된 메뉴가 되죠
오렌지 태양 아래
22/12/17 12:43
수정 아이콘
그러면 지금 제가 올린 스크린샷 설계에서
'반찬구성테이블'의 반찬구성 테이블을(PK)로 하지 않고 PK가 아닌 일반 컬럼(not unique)으로 만든 다음

메뉴구성테이블에서 FK로 받아오면 된다는 건가요??

하... 능지가 처참해서 죄송합니다 ㅠㅠㅠ
프즈히
22/12/17 13:08
수정 아이콘
네. pk가 없을 수는 없으니 그냥 1 2 3 4 5 번호 컬럼이라도 다른 컬럼을 추가하긴 해야겠네요.
자발개보초
22/12/17 13:31
수정 아이콘
N대M 매핑 테이블 구성하는법을 찾아서 공부하시면 됩니다.
저는 밥이랑 국(1 대 N)도 결국 N 대 M의 subset이니
특별한 이유가 없다면 도시락 - 반찬 - 매핑테이블 3개로 구성 할거 같네요.

[도시락]
| id | 이름 |
| --------------------|
| 1 | 소불고기도시락1 |
| 2 | 돼지불고기도시락1 |


[반찬]
| id | 이름 | 종류 |
| -- | --------------- | ----- |
| 1 | 백미밥 | 밥 |
| 2 | 잡곡밥 | 밥 |
| 3 | 미역국 | 국 |
| 4 | 콩나물국 | 국 |
| 5 | 소불고기 | 반찬 |
| 6 | 돼지불고기 | 반찬 |
| 7 | 김치 | 반찬 |


[매핑테이블]
| 도시락_id | 반찬_id |
| --------------------- |
| 1 | 1 |
| 1 | 3 |
| 1 | 5 |
| 1 | 7 |
| 2 | 2 |
| 2 | 4 |
| 2 | 6 |
| 2 | 7 |

SQL 에서는 컬럼 2개로 Composition Key를 구성해서 PK 설정 할 수 있으니 (장단이 있습니다) 알아 두시면 좋습니다.
오렌지 태양 아래
22/12/17 14:57
수정 아이콘
도시락 테이블에서 도시락id를,
반찬테이블에서 반찬id를

매핑테이블에 FK로 가져온 다음
[도시락ID,반찬ID]를 묶어서 PK로 지정하면 된다는 말씀이시죠???
오렌지 태양 아래
22/12/17 16:52
수정 아이콘
선생님 감사합니다.

답변 달아주신거 곰곰히 생각하다가 유레카를 외쳤습니다.

답변달아주신분들 다 같은 말 하시는것 같은데

테이블 예시까지 들어주셔서 이해가 가능했던거 같습니다 ㅠㅠ
22/12/17 13:35
수정 아이콘
정석적으로 가려면 테이블을 하나 더 만들어서 반찬구성코드, 반찬코드를 composite key로 묶어 PK로 가진 관계 테이블을 만들면 됩니다.
물론 그러면 당장 반찬구성테이블에는 반찬구성코드만 덜렁 있는 모습이 되어서 이상해보이겠지만, 실제로 만들때는 잡다한 메타정보(이름, 메모, 생성시간 등)가 들어갈 가능성이 높구요.
오렌지 태양 아래
22/12/17 14:59
수정 아이콘
세인트님 말씀주신게 결국 바로 위의 자발개보초님의 말과 같은 말씀하시는거 같은데
맞게 이해한건가요??
22/12/17 18:21
수정 아이콘
아 저는 오렌지님이 질문한 부분을 해결하기 위해 반찬과 반찬구성테이블만 연결하는 테이블을 제안한거고,
자발개보초님은 전반적으로 수정 제안해주신겁니다~
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
167892 [질문] 강남쪽 카페와 고깃집 추천부탁드립니다. kogang20017000 22/12/18 7000
167891 [질문] 오락실 관련 설문조사 부탁드립니다 [7] 누묵7057 22/12/18 7057
167889 [질문] 닌텐도 하다가 엑박패드로 게임 하니까 자이로 없어서 너무 힘듭니다. [18] 선플러13907 22/12/18 13907
167888 [질문] 잠 쫒고 체력 올리는 레버리지 방법 있을까요? [9] 무한도전의삶9593 22/12/18 9593
167887 [질문] 방한화 살만한가요? [4] 물소싫어8054 22/12/18 8054
167885 [질문] 어제 아이폰14 산 초보인데요,, 홈화면 설정 질문입니다 [4] 분당선7557 22/12/18 7557
167884 [질문] 스팀 FIFA23 실행이 안됩니다 [무료로받은제품] [1] 영길6927 22/12/18 6927
167883 [질문] 유게에 우깜 좌깜 [15] MrLee9237 22/12/18 9237
167881 [질문] 온수매트, 카본매트 제일 저렴하고 쓸만한 거 알려주세요!! [2] 윤사랑8560 22/12/18 8560
167880 [질문] 조카 돌잔치 축의금 보통 얼마가 적당한가요? [11] 달콤한인생10942 22/12/18 10942
167879 [질문] 위쳐 3 질문 [3] Love.of.Tears.8699 22/12/17 8699
167877 [질문] 아이돌 연습생이 아직도 하려는 사람들 수요가 있는 이유가 뭘까요? [32] 보리야밥먹자10936 22/12/17 10936
167876 [질문] 등산옷 베이스레이어 관련 질문드려요. [11] Friday7788 22/12/17 7788
167875 [질문] 혹시 선릉역 주변에 콜키지비 받고 술 가져갈수 있는 곳 있나요? [5] 세인트루이스8904 22/12/17 8904
167874 [질문] VMWARE 구동 시 E코어만 디립다 돌리는 문제.. [5] 교대가즈아8572 22/12/17 8572
167873 [질문] 위스키 서울에서 살만한데가 어디 있을까요? [8] lefteye8641 22/12/17 8641
167872 [질문] 이적료 주고 아이돌 그룹 만들수 있으면? [16] 오타니7212 22/12/17 7212
167871 [질문] 위쳐3(ps4pro) 버그 질문있습니다. 스카야7315 22/12/17 7315
167870 [질문] 미국계정 PS5 에서 한국어 위쳐 3 하는 방법 질문 [6] vitaminwater8042 22/12/17 8042
167869 [질문] 스팀과 플레이스토어 관련 혜택있는 신용카드 있을까요? [2] Winter_SkaDi6413 22/12/17 6413
167868 [질문] DB 설계 연습중인데 뇌정지가 와서 질문드립니다 [9] 오렌지 태양 아래6938 22/12/17 6938
167867 [질문] 부산 여행 접대 코스? 추천 좀 부탁 드려요. (스타벅스 1만원). [13] 실버벨11729 22/12/17 11729
167866 [질문] 생활의고수 피잘러님들 난방비 절약 꿀팁 부탁드립니다. [7] Liberal7207 22/12/17 7207
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로