Section 3 - 53일차

노태경·2021년 6월 18일
0

SEB-Section 3

목록 보기
6/31
post-thumbnail

1. Toy - 26일차

  • 연속된 부분집합의 합 중 가장 큰 합을 찾는 문제
    구간의 합이 음수인 경우, 그 결과를 버리고 다시 합을 구하는 것이 중요한 포인트 인듯
    Number.MIN_SAFE_INTEGER; // JavaScript에서 안전한 최소 정수값

2. Schema & Query Design

  • 데이터베이스 설계

  • 테이블 간 관계
    1:1 관계
    1:N 관계
    N:N 관계가 있음

  • 테이블 자체 관계
    self referencing 관계

  • 1:1 관계
    phone_id와 같이 1:1로 고유한 외래키를 가지는 것

  • 1:N 관계
    ex)
    한명의 사람이 여러 전화번호를 가질 수 있지만
    전화번호 하나는 여러 명이 쓸 수 없고, 한 사람과만 연결되는 관계

  • N:N 관계
    한 수업을 듣는 학생은 여러명
    한 학생이 듣는 수업도 여러개
    => Join table 활용

  • 자기참조 관계(Self Referencing)
    한 테이블 내에서의 관계
    ex)
    사람 당 한 사람만 추천할 수 있음
    여러명에게 추천 받을 수 있음
    1:N의 관계와 비슷

3. SQL 내장함수

  • GROUP BY
  • HAVING
    GROUP BY 결과에 대한 필터 적용
    그룹화 하기 전에는 WHERE
    그룹화하면 HAVING

4. Database review

  • SQL ==> 엑셀과 비슷한, row,column 형태
    MySQL
    SQLite
    MariaDB
    postgreSQL

  • NoSQL ==> JSON 형태
    MongoDB
    Amazon Dynamo DB
    cassandra
    redis

  • 여러 개의 칼럼은 묶어 하나의 프라이머리 키로 지정할 수 있다
    테이블 내에는 하나의 프라이머리 키만 존재할 수 있다
    CONSTRAINT 이름 PRIMARY KEY(ID,LastName)<<2개의 칼럼을 묶어서 하나의 프라이머리 키로 사용
    REFERENCES키워드를 사용해 외래키로 참조
    FOREIGN KEY (컬럼) REFERENCES 외부테이블(컬럼)

이렇게 짝지어 사용되는 듯?
SELECT - WHERE
JOIN - ON

NoSQL은 수평적으로 확장된다

컴퓨터의 능력(RAM,CPU)을 확장한다 >> 수직적
인스턴스를 늘린다 >> 수평적

사람이 많은 빌딩에서 엘리베이터 한 대의 능력을 키워 수용량을 늘린다면 수직적?
엘리베이터를 여러대를 설치해서 수용량을 분산시킨다면 수평적?

AUTO_INCREMENT 자동으로 증가하는
int 정수
varchar 문자
date 날짜만 포함
datetime 날짜와 시간 모두 포함 1000-01-01 ~ 9999-12-31 문자형 데이터값을 입력해줘야 함
time 시간만 포함
timestamp 날짜와 시간 모두 모함 1970-01-01 ~ 2038-01-19 03:14:07 UTC 숫자형 자동으로 현재 날짜 입력

SQL Sprint

SNS 데이터 구조를 sql로 나타내기 시도! 다음주에 작성을 보여주신다고 하니.. 비교하면서 공부해야겠다. 어렵다!!
https://dbdiagram.io/

CREATE TABLE users (
  id int PRIMARY KEY AUTO_INCREMENT,
  name varchar(255)
);

CREATE TABLE follow (
  id int PRIMARY KEY AUTO_INCREMENT,
  following int,
  FOREIGN KEY (following) REFERENCES users(id),
  follower int,
  FOREIGN KEY (follower) REFERENCES users(id)
  
);

CREATE TABLE  posts (
  id int PRIMARY KEY AUTO_INCREMENT,
  likes int,
  createdAt timestamp NOT NULL DEFAULT current_timestamp,
  postImage varchar
);

CREATE TABLE comments (
  id int PRIMARY KEY AUTO_INCREMENT,
  postID int,
  FOREIGN KEY (postID) references posts(id),
  createdAt timestamp NOT NULL DEFAULT current_timestamp,
  contents varchar(255),
  userID varchar(255),
  FOREIGN KEY (userID) references users(id)
);

CREATE TABLE tag (
  id int PRIMARY KEY AUTO_INCREMENT,
  contents varchar(255)
);

CREATE TABLE POSTS_TAG (
  id int PRIMARY KEY AUTO_INCREMENT,
  postID int,
  FOREIGN KEY (postID) references posts(id),
  tagID int,
  FOREIGN KEY (tagID) references tag(id)
);

.gitignore에 .env 파일을 추가하는 이유 =>> 보통 민감한 정보를 .env에 저장하는데 이를 넷상에 올리는 것은 위험할 수 있다!

profile
개발자 공부 일기😉

0개의 댓글