우리 이제 주문처럼 외운다.
유저가 갖고있는 카테고리를 조회해야해
UserCategory
- 여기서 루체가 UserCategory의 식비 카테고리를 삭제함(2, 1)
user_id | category_id |
1 | 1 |
2 | 1 |
ㅤ | ㅤ |
ㅤ | ㅤ |
User
id | name |
1 | Luce |
2 | William |
Category
id | name | kind |
1 | 식비 | 지출 |
2 | 교통비 | 지출 |
3 | 생활 | 지출 |
Expenditure
id | amount | category_name | category_id | user_id |
1 | 1000 | 식비 | 1 | 1 |
2 | 2000 | 식비 | 1 | 2 |
3 | 3000 | 교통비 | 2 | 2 |
- Expenditure를 조회할 때 category_id , user_id로 UserCategory를 조회함
- 윌리엄이 u, c(1, 1) userCategory 조회 → hit
- 이때 category_id로 Category table에서 name을 조회
- 루체 u, c(2 , 1) userCategory 조회 → miss
- 이때, Expenditure에서 category_name을 찾아옴
→ 여기서 Expenditure를 조회할 때 category_id를 안쓰고 그냥 user_id로 수입, 지출에 등록만 가져오면 되지 않을까요? 이름은 무조건 수입, 지출에 등록된걸 참조하구요
상세
- 수입, 지출 등록할때는 User_Category에 등록된 name을 참조해서 저장
- 즉, 수입과 지출 분류에 대한 이름은 등록시점에 결정된다. (참조되는것이 아님)
- User_Category는 유저 별 카테고리 리스트를 저장하는 용도로만 사용.
- 유저가 가진 카테고리 이름의 리스트만 저장.
- user_id에 등록할 수 있는 카테고리 수를 제한하면 좋을 듯.
user_id | name |
1 | 내 카테고리1 |
1 | 내 카테고리2 |
2 | 내 카테고리1 |
3 | 내 카테고리1 |
- User_Category는 유저 별 카테고리 리스트를 저장하는 용도로만 사용.
- 유저가 가진 카테고리 이름의 리스트만 저장.
- user_id에 등록할 수 있는 카테고리 수를 제한하면 좋을 듯.
- Default Value는 그냥 별도 테이블 둬서 처리.
- 유저 카테고리가 삭제된다 → 그냥 삭제하고 끝.
- 신규 유저 → User_Category에 Default Value값 전부 inset → 수입, 지출 등록시 User_Category기준으로 이름만 참조해서 무조건 저장
- category_id로 직접 Category Table을 조회하면
- (사용자 카테고리가 아니라, 전체카테고리로 조회하는 경우)
- 1, 식비, 지출이 존재하는 것이 맞나요? → OK
- 근데 그거는 루체가 가지고 있는 카테고리가 맞나요? → NO