You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
현재 File 테이블을 User, Portfolio, Item 3개의 테이블이 참조하고 있습니다.
User와 Portfolio는 File과 1대1 관계이기 때문에 fk를 각자의 테이블에 두지만, Item의 경우 1대다 관계이기 때문에 fk를 File 테이블에서 가지게 됩니다.
이 경우의 문제점은 테이블의 정합성을 해치고, item_id값을 가지지 않는 User 와 Portfolio 테이블에서도 item_id 칼럼 값을 불필요하게 가져 null 값이 발생한다는 문제가 있습니다.
해결방안
이의 경우 2가지의 해결방법을 떠올릴 수 잇습니다.
ItemFile 테이블을 따로 만들어서 기존 파일과 이를 구분한다.
File 테이블에서 Item_Id가 아닌 OwnerId 값을 두어 이 곳에 item_id, user_id, portfolio_id 값을 모두 담고, Filtype 칼럼에 Enum 값으로 어떤 테이블의 id 값인지를 구분한다.
멘토링 결과 2번 방법이 더 낫다는 결론을 내렸습니다. 1번 같은 경우 불필요하게 테이블이 한 개 더 생성된다는 문제점이 있기 때문입니다.
따라서 2번 방향으로 코드를 리팩토링하면 좋을 것 같습니다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
현재 상황
현재 File 테이블을 User, Portfolio, Item 3개의 테이블이 참조하고 있습니다.

User와 Portfolio는 File과 1대1 관계이기 때문에 fk를 각자의 테이블에 두지만, Item의 경우 1대다 관계이기 때문에 fk를 File 테이블에서 가지게 됩니다.
이 경우의 문제점은 테이블의 정합성을 해치고, item_id값을 가지지 않는 User 와 Portfolio 테이블에서도 item_id 칼럼 값을 불필요하게 가져 null 값이 발생한다는 문제가 있습니다.
해결방안
이의 경우 2가지의 해결방법을 떠올릴 수 잇습니다.
멘토링 결과 2번 방법이 더 낫다는 결론을 내렸습니다. 1번 같은 경우 불필요하게 테이블이 한 개 더 생성된다는 문제점이 있기 때문입니다.
따라서 2번 방향으로 코드를 리팩토링하면 좋을 것 같습니다.
Beta Was this translation helpful? Give feedback.
All reactions