liner server api제작 - 스키마 설계(1)
스키마 설계 - 1차
- 중요 고려사항인 테마 변경 시 하이라이트 자동 변경에 초점을 두고 설계
- users와 themes를 M:1 관계로 설정하였다.
- highlights를 users와 pages의 매핑 테이블로 설정했다.
db 테스트 데이터 입력
users table
- users1, 2, 3은 각각 themeId를 1, 2, 3을 가지고 있다.
- 유저가 색상을 선택할 때 front화면에는 현제 users.themesId와 일치하는 color만 나타날 것이다.
- isPremium은 아직 미구현, true, false에 따라 선택할 컬러수를 늘리거나 다른 폰트로 글씨를 바꾸는 방법을 넣고 싶음(advanced)
highlights table
- user당 2개의 하이라이트를 가지고 있다. 각각 자신의 themes에 속하는 색상 2개를 하나씩 선택한 상태다.
themes table
- 하나의 themes에 color가 3개씩 들어있다.
- users.premium 여부에 따라 테마당 선택하는 색상 수를 늘리거나 글꼴을 변경할 수 있게 하고싶다. (advanced)
pages table
- pages 하나당 하나의 pageUrl을 가진다.
- users가 하나의 pageId나 pageUrl을 부른다면, highlights.pageId나 highlights.pageUrl을 가지고있는 highlights rows를 가져올 수 있을 것이다.
문제점
- themes.color1, 2, 3의 사용이 데이터 무결성에 문제가 될 수 있다는 것을 알았다. 세 가지의 컬러는 결국 같은 형식의 데이터인데, 다른 칼럼으로 담고 있다는 것이 컬럼 중복으로 보일 수 있다는 것이다.