내가 소유한 스마트폰 DB ERD 구조 이렇게 해도 괜찮을까요? 0 4 787

by 퍼레버의리 [DB 모델링/설계] db [2019.03.31 11:07:48]


일단 테이블 부터 설명하겠습니다.

 

member 테이블

id name
1 홍길동
2 아무개
3 김동

 

product 테이블 (유저가 중고로 등록한 스마트폰)

id member_id name proce
1 1 갤럭시S5 3414
2 1 아이폰6S 5644
3 2 갤럭시S3 2213

 

 

my_smart_phone 테이블 (내가 직접 등록 할수 있고 VS product 테이블에서도 구입하면 등록되는 테이블)

 

id member_id name register_type  
1 1 내가 소유한 아이폰S 직접등록  
2 1 어제 구입한 갤럭시 중고구입  
3 2 G5 직접등록  
4 3 아이폰 구입했어!!! 중고구입  

 

my_smart_phone_product_map 테이블 (my_smart_phone 등록시! register_type컬럼이 중고로 구입했을경우 추가되는 테이블)

id my_smart_phone_id product_id
1 2 3
2 4 2

 

 

 

간단하게 설명하자면

 

member 테이블은 일반적으로 회원 테이블입니다.

product 테이블은 내가 중고로 팔려고하는 스마트폰이구요

 

여기서 해당 member가 자기가 소유한 스마트폰을 등록 할수 있는데요

그것이 바로 my_smart_phone 테이블 역활입니다.

 

여기서 문제가 생기는데요

 

my_smart_phone  테이블 등록 조건은 2가지입니다.

1. "직접 등록"

2. "product 테이블 통해 중고로 구입해서 등록된 스마트폰 데이터"

 

1번 조건 경우 문제가 크게 문제가 없는데

문제는 2번 조건입니다.

 

2번 경우 어떤 중고 스마트폰 통해 등록했는지

즉 product 테이블에서 해당 데이터를 가져와야하는데요

 

처음에는 my_smart_phone 테이블에서 product_id를 추가했었지만

1번 경우 즉 직접 등록시 product_id가 null로 되는 DB 정규화에 어긋?나는 문제가 생깁니다.

 

그래서 

2번 경우

my_smart_phone_product_map 테이블을 생성해서 여기다가 맴핑 하도록 했습니다.

 

 

 

제가 아직 프로그래밍 입문이다 보니 이것을 정답인지 모르겠습니다 ㅠ,ㅠ

 

선배님 조언을 듣고자 이렇게 글을 등록 합니다.

 

조언 부탁드립니다!! 선배님!!

 

by 마농 [2019.04.01 08:37:12]

참조 컬럼에 널이 들어가는 것이 정규화 위배는 아닙니다.


by 퍼레버의리 [2019.04.01 09:51:57]

그럼 마농님 
my_smart_phone테이블에 product_id 컬럼 생성하고
product_id 값이 있으면 조건2 해당
product_id값이 null면 조건1 해당

이렇게 하는것이 좋을까요?

아니면 제가 적은 내용 처럼 
my_smart_phone_product_map  테이블을 생성해서 조건1, 조건2 판별 하도록 할까요?


by 마농 [2019.04.01 09:55:39]

굳이 불필요한 테이블을 하나 더 만들 필요가 있는지?


by 퍼레버의리 [2019.04.01 09:58:23]

아 그럼 my_smart_phone_product_map  테이블 생성 안하고

my_smart_phone테이블에 product_id null 이냐 매핑되어 있는가에  등록 조건을 달리 하도록 하면 좋겠다는 의견이군요.

혹시 다른 문제가 있으면 피드백 부탁드립니다!!!!!

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