오늘은 데이터베이스의 스키마를 디자인해보고 실제 SQL파일을 작성하여 테이블을 생성하고 명령문을 작성하여 테스트하는 스프린트를 진행하였다. SQL의 명령문들을 사용하여 원하는 정보를 필터링하는 것도 중요하지만 처음에 데이터베이스를 설계할 때 웹페이지의 작동원리와 기능에 맞춰서 디자인하는 것도 중요하다는 것을 알았다.
사람들이 서로 댓글을 달며 서로 follow 관계를 만들 수 있는 사진 SNS 서비스인 Instagram의 기능을 보고 어떤 형태로 데이터베이스를 설계해야 하는지 스키마를 작성해보는 스프린트를 진행하였다.
1. 게시물(Post) 작성 기능
인스타그램에서는 여러 개의 사진(A)을 올릴 수 있습니다. 사진을 업로드할 때, 사진을 설명하는 간단한 글(C)이 올라갑니다.
2. 게시물에 댓글 달기 및 좋아요 기능
게시물이 업로드되면 다른 사용자는 이 게시물에 댓글(E)을 달 수 있고, 좋아요(B) 를 눌러 관심을 표할 수 있습니다.
3. 해시태그 기능
게시물에 #감성 #맛집 등의 해시태그(D)를 남길 수 있으며, 이 해시태그를 누르면 이 해시태그가 사용된 모든 게시물을 한 데 모아 볼 수 있습니다.
4. follow 기능
인스타그램에서 친구 관계는 팔로워(follower)와 팔로잉(following)으로 나뉩니다. 김코딩이 최해커를 following 하면, 최해커의 피드가 김코딩의 홈 화면에 나타납니다. 최해커의 입장에서는 김코딩이 follower로 추가됩니다.
어떻게 설계해야 테이블을 최소한으로 사용하면서 기능을 구현할 수 있는지에 대해서 고민을 하면서 작성을 했다. SQL에 대한 이해가 완전하지 않고 빠르게 진행을 하다보니 미숙한 부분이 많이 보여서 나중에 실제 인스타그램의 모든 기능을 구현할 수 있도록 수정을 해야겠다.
웹페이지의 기능에 따라 적합한 데이터베이스의 구조를 선택해서 스키마를 디자인 하는 것이 얼마나 중요한지를 알 수 있는 챕터였다. 인스타그램 외에도 다른 사이트에서도 데이터베이스가 어떤 구조로 이루어져 있는지 생각해보면서 SQL과 NoSQL에 대해서 공부해봐야겠다.