본문 바로가기
부트캠프 개발일기/Database

32일차: 데이터베이스 설계

by shyun00 2023. 3. 29.

❯ Relational database (관계형 데이터베이스)

관계형 데이터베이스는 테이블(table)들이 다른 테이블과 관계를 맺고 모여있는 집합체로 이해할 수 있다.

여기서 테이블은 사전에 정의된 열의 데이터 타입에 맞는 데이터가 행으로 저장된 것을 의미한다.

 

<관련 용어>

  • 열(column, field) : 테이블의 한 열을 나타내며 정해진 타입을 갖는다. 필드 또는 속성이라고도 불린다.
  • 행(row) : 관계된 데이터의 묶음을 의미한다. 한 테이블은 같은 수의 열을 가지며 튜플, 레코드라고도 불린다.
  • 값(value) : 각각 행과 열에 대응하는 값을 가진다. 열의 타입에 맞는 값을 가져야한다.
  • 키(key) : 테이블에서 행의 식별자로 이용되는 열을 키(key) 또는 기본키(Primary key)라고 한다. 기본키는 null 값을 가질 수 없으며 하나만 존재한다.(반드시 한 열만이 기본키가 될 수 있는것은 아니다. 여러 열을 합쳐서 복합키로 사용할수도 있다.) 다른 테이블을 참조하기 위한 식별자로 사용되는 열을 외래키(Foreign key)라고 하며 외래키는 여러개가 될 수 있다.
  • 스키마(schema) : 테이블을 디자인하기 위한 청사진을 의미한다. 테이블 각 열에대한 항목과 타입 뿐만아니라 기본키와 외래키도 나타내야한다.
  • 관계(relationship) : 테이블간의 관계는 관계를 맺는 테이블 수에 따라 1:1(일대일), 1:N(일대다), N:M(다대다) 관계로 구분된다.

출처 : TCPSCHOOL

과제 - 인스타그램 스키마 디자인

인스타그램을 예시로 게시물 작성, 댓글달기 및 좋아요 기능, 해시태그 기능, follow 기능에 대한 스키마를 작성해보았다.

필요한 테이블을 정의하고 테이블간의 관계를 중점적으로 작성하였다.

 

참고자료

TCPschool : http://www.tcpschool.com/mysql/mysql_intro_relationalDB


특정 기능을 구현한다고 할 때, 어떤 특성이 필요하고 어떤 관계를 통해 구성되는지 뼈대를 작성하는것이 중요하다는걸 알 수 있었다.

다른 학습자분들의 과제에서 내가 생각하지 못했던 부분들을 보면서 많이 배울 수 있었다.

여러 사이트를 참고하면서 해당 기능을 어떻게 구현할 수 있을지 생각해보고, 구조를 그려보는 연습이 필요할 것 같다.