Number.MIN_SAFE_INTEGER;
// JavaScript에서 안전한 최소 정수값데이터베이스 설계
테이블 간 관계
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의 관계와 비슷
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 숫자형 자동으로 현재 날짜 입력
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에 저장하는데 이를 넷상에 올리는 것은 위험할 수 있다!