코드스테이츠 BE 32일차 - 네트워크 설계

coding infant·2022년 8월 5일

코드스테이츠BE

목록 보기
32/48

[학습목표]

데이터 간의 다양한 관계를 알아본다

데이터 간 관계를 기술하는 언어(SQL)를 익힌다

합리적이고 효율적인 방법으로 데이터베이스를 구성하는 방법을 이해

데이터베이스에서 관련 정보를 찾기 위해 SQL 쿼리를 작성하는 방법을 알아본다

스키마(schema) : 데이터베이스에서 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명. 데이터베이스의 청사진

엔티티(Entity) : 고유한 정보의 단위. Teachers, Classes, Students. 테이블로 표시됨

필드 : 해당 엔티티의 특성을 설명. 행렬 중 렬. Teacher의 필드는 Name, Department, Classes

레코드 : 테이블에 저장된 항목. 행렬 중 행. Teacher 중 Cynthia, Music, Music Theory

ID : 고유한 값. 기본 키 (Primary Key)

foriegn key : 참조키. 기본키를 참조

1:다 의 관계는 인덱스를 참조하는 것이 가장 베스트

다:다의 관계는 테이블로 생각 1:다를 두 번 쓴 것으로 생각 (조인 테이블)

[데이터베이스 설계]

데이터 : 각 항목에 저장되는 값

테이블 (table 또는 relation) : 사전에 정의된 열의 데이터 타입대로 작성된 데이터가 행으로 축적

칼럼 (column 또는 field) : 테이블의 한 열

레코드 (record 또는 tuple) : 테이블의 한 행에 저장된 데이터

키 : 테이블의 각 레코드를 구분할 수 있는 값. 각 레코드마다 고유한 값을 가짐 (기본키, 외래키 등)

테이블 사이 관계

1:1

1:N

N:N : Join 테이블 만들어 관리

[SQL 내장함수]


GROUP BY                       // 그룹을 묶어서 조회
HAVING                         // GROUP BY 로 조회된 결과 필터링 가능

SELECT CustomerID, AVG(Total)  
FROM invoices                  // Invoice 테이블을
GROUP BY CustomerID            // CustomerID로 그룹화하고
HAVING AVG(Total) > 6.00       // 그 평균이 6 초과한 결과 조회

WHERE : 저장된 레코드를 필터링 (그룹화 전)

HAVING : 그룹화한 결과에 대한 필터

SUM()
AVG()
MAX()
MIN()

[SELECT 실행 순서]

FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY

[인스타그램 스키마 디자인]

https://dbdiagram.io/
해당 사이트에서 그래프로 쉽게 도식화하여 볼 수 있다

오늘 과제로 제출한 스키마 디자인 (ERD 다이어그램)

Table USERS {
  user_id int
  username varchar(255)
  password varchar(255)
  following int
  follower int
}

Table POSTS {
  posts_id int
  username varchar(255)
  likes int
  text varchar
  post_date timestamp
  post_comments varchar
  hashtag varchar
  photo varchar
}

Table FOLLOWINGS {
  followings_id int
  following_id int
  following_name varchar
}

Table FOLLOWERS {
  followers_id int
  follower_id int
  follower_name varchar
}

Table LIKES {
  like_id int
  username varchar
}

Table COMMENTS {
  comments_id int
  username varchar
  comment varchar
  comment_date timestamp
  hashtag varchar
}

Table PHOTOS {
  photos_id int
  url varchar
}

Table HASHTAGS {
  hashtags_id int
  hashtag varchar
}

Table POSTHASHTAG {
  posthashtag_id int
  hashtag varchar
}

Ref: USERS.following < FOLLOWINGS.following_id
Ref: USERS.follower < FOLLOWERS.follower_id
Ref: USERS.username < POSTS.username
Ref: USERS.username < LIKES.username
Ref: USERS.username < COMMENTS.username
Ref: POSTS.likes < LIKES.like_id
Ref: HASHTAGS.hashtag < POSTHASHTAG.hashtag
Ref: HASHTAGS.hashtag < POSTS.hashtag
Ref: HASHTAGS.hashtag < COMMENTS.hashtag
Ref: PHOTOS.url < POSTS.photo
Ref: COMMENTS.comment < POSTS.post_comments
Ref: USERS.username < FOLLOWINGS.following_name
Ref: USERS.username < FOLLOWERS.follower_name

글자수 제한 얼마큼 잡아줘야 하는 지 세세하게 적어주고 싶었는데 애매할바엔 안 적는게 낫겠다 싶어서 적지 않았다

0개의 댓글