데이터베이스
- 관련성을 가지며 중복이 없는 데이터들의 집합
- SQL: 관계형 데이터베이스
- DBMS: 데이터베이스 관리 시스템
- RDBMS: 관계형 데이터베이스를 관리하는 시스템
컬럼에 대한 옵션들
id INT NOT NULL AUTO_INCREMENT
- INT: 정수
- VARCHAR: 문자열 자료형, 가변 길이(CHAR은 고정 길이)
- TEXT: 긴 문자열은 TEXT로 별도 저장
- DATETIME: 날짜 자료형 저장
- TINYINT: -128에서 127까지 저장하지만 1 또는 0만 저장해 불 값 표현
--- 자료형
- NOT NULL: 빈 값은 받지 않는다(NULL은 빈 값 허용)
- AUTO_INCREMENT: 숫자 자료형인 경우 다음 로우가 저장될 때 자동으로 1증가
- UNSIGNED: 0과 양수만 허용
- ZEROFILL: 숫자의 자리 수가 고정된 경우 빈 자리에 0을 넣음
- DEFAULT now(): 날짜 컬럼의 기본값을 현재 시간으로
--- 옵션
- PRIMARY KEY(id): 고유한 값을 정함
- INDEX 인덱스명: 자주 검색하는 테이블을 index 해두면 빠르게 찾을 수 있음
ASC는 인덱스를 오름 차순으로 저장함(내림차순은 DESC)
- CONSTARAINT: FOREIGN KEY와 REFERENCES와 비교해서 존재하는 KEY인지 판단
- FOREIGN KEY: REFERENCES와 비교(외래키는 두 테이블이 관계가 있다는 것을 표시)
- REFERENCES: FOREIGN KEY와 비교하는 테이블
--- 옵션
테이블 관계 정의
- 1대1 관계 (사용자와 사용자 세부 정보)
- hasOne, belongsTo(foreignKey가 생길곳이 belongsTo)
- 1대N 관계 (사용자와 게시글)
- N대 M 관계 (게시글과 해시태그, 다대다 관계)
- 중간 테이블이 생겨야함
- belongsToMany, through