관계형 데이터베이스에는 여러관계가 존재한다
하나의 레코드가 다른 테이블의 레코드 한개와 연결된 경우
하나의 레코드가 서로 다른 테이블의 여러개의 레코드와 연결된 경우
여러개의 레코드가 다른 테이블의 여러개의 레코드와 관계가 있는 경우
다대다 경우에는 조인 테이블을 만들어 관리함.
자기 참조의 관계
한명의 유저는 여러명의 추천을 받을 수 있으므로 1:N의 관계와 유사하다. 그래서 위와 같이 표현한다.
인스타그램 기능
1. 게시물(Post) 작성 기능
2. 게시물에 댓글 달기 및 좋아요 기능
3. 해시태그 기능
4. follow 기능
내가 그린 스키마 디자인
1. USERS한명이 수많은 POST를 작성 할 수 있으므로 1:N의 관계를 생각해 POSTS테이블의 user_id에 연결 했다. 그리고 하나의 POST에는 수많은 사진과 텍스트를 넣을 수 있으므로 WRITING 테이블에 1:N관계를 통해 연결하였고 WRITING 테이블에 텍스트와 사진을 저장 할 수있는 필드를 만들어 주었다.
2. 하나의 POST에 여러개의 댓글을 달 수 있으므로 COMMENT 테이블에 1:N관계로 연결해 주었고, 또 USERS한명이 여러개의 댓글을 쓸 수 있으므로 COMMENT 테이블에 1:N관계로 연결해 주었다.
그리고 좋아요 기능또한 USERS가 여러개의 좋아요를 사용할 수 있기때문에 1:N의 관계를 사용했고, 하나의 POST에 여러개의 좋아요가 달릴 수 있으므로 1:N관계를 마찬가지로 사용 했다.
3. 해시태그는 하나의 POST에 여러개의 해시태그가 달릴 수 있고 하나의 해시태그에 또한 여러개의 POST가 엮일 수 있기때문에 조인 테이블을 이용해 밖에서 연결 하였다.
4. following 과 follower를 구분해서 연결했다. 이때도 역시 한명의 USERS가 여러명을 팔로우 할수있고 여러명한테 팔로우 당할 수 있기 때문에 1:N의 관계를 이용했다.
처음 DB를 접해보고 스키마디자인을 처음 해봐서그런지 뇌가 작동을 하지않았다. 머리가 터질것 같았다. 도와주는 사람들이 없었더라면 뛰어내렸을거 같다.