
관계형 데이터베이스 RDBMS에서는 테이블 Table, 레코드 - 테이블 - 데이터베이스 구조NoSQL 데이터베이스에서는 컬렉션 Collection, 도큐먼트 - 컬렉션 - 데이터베이스 구조나이 속성이 가질 수 있는 값 = {1,2,3,4, ... , 100, 101, ...}성별 속성이 가질 수 있는 값 = {남성, 여성}회원이라는 릴레이션에 이름, 아이디, 회원번호, 성별, 나이 등의 속성을 가질 수 있고, 나이 속성은 {남성, 여성}이라는 도메인을 가질 수 있다.| id | account_name | address | gender | created_at | |
|---|---|---|---|---|---|
| 1 | 장윤서 | younseojj@gmail.com | 서울 | 여성 | 2022-12-23-23:12:38 |
| 2 | 정성우 | anfrosus@naver.com | 서울 | 남성 | 2023-01-12-01:43:49 |
테이블로 이름, 이메일, 주소, 성별 등의 속성을 가지고 있으며 account_name, email, address, gender 등의 필드를 가진다. 어떤 속성이 올 수 있지 ? -> 이름, 이메일, 주소, 성별, 가입 날짜 등
이 엔터티를 데이터베이스에 넣어서 테이블로 만들려면 ?
속성 마다 맞는 타입을 지정해주어야 하겠구나!
타입은 DB마다 조금씩 다르다. 오늘은 MySQL을 기준으로!
보통 한글로 속성이름을 사용하지 않는다. 회원 이름은 account_name, 성별은 gender 등으로 영어이름에 매핑해서 사용한다.
위의 회원 테이블을 MySQL로 구현하려면 다음과 같은 코드를 작성해야 한다.
CREATE TABLE ACCOUNT(
ID INT NOT NULL AUTO_INCREMENT,
ACCOUNT_NAME VARCHAR(255) NOT NULL,
EMAIL VARCHAR(255) NOT NULL,
ADDRESS VARCHAR(255),
GENDER VARCHAR(255),
CREATED_AT DATE,
PRIMARY KEY (ID)
);
- TINYINT, SMALLINT, MEDIUMINT, INT,BIGINT 등
🔘 날짜타입
- DATE, DATETIME, TIMESTAMP 등
DATE: 날짜는 있지만 시간은 필요하지 않는 경우, 1000-01-01 ~ 9999-12-31 범위 지원. 3바이트DATETIME: 날짜 및 시간 부분을 모두 포함하는 값, 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 범위. 8바이트TIMESTAMP: 날짜 및 시간 부분 모두 포함, 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07 까지 지원. 4바이트🔘 문자타입
- CHAR, VARCHAR, TEXT, BLOB, ENUM, SET 등
CHAR와 VARCHAR: ()안에 몇 자 까지 입력할 건지 정할 수 있다. CHAR같은 경우, CHAR(30)이면 30글자까지 작성 가능하다.CHAR는 테이블을 생성할 때 선언한 그 길이로 고정되며 길이는 0~255 사이의 값을 가질 수 있다. 레코드를 저장할 때 무조건 그 길이로 고정되어 저장된다.VARCHAR같은 경우는 가변 길이 문자열로, 0~65,535 사이의 값을 가질 수 있다. 입력된 데이터에 따라 용량을 가변시켜 저장한다.- VARCHAR(60000)으로 지정해두어도
장윤서를 입력하면장윤서에 대한 바이트+길이 기록용 1바이트로 저장하게 된다.TEXT와 BLOB: 큰 데이터를 저장할 때 / TEXT - 큰 문자열 저장용(게시판의 본문 등) / BLOB - 이미지, 동영상 등 큰 데이터 저장용, 보통은 AWS S3 사용해서 서버에 올리고 파일에 관한 경로를 VARCHAR로 받아서 저장하는 경우가 많다. (우리 프로젝트 했던 것 처럼!)ENUM과 SET: 문자열을 열거한 타입
기본키, 외래키, 슈퍼키, 대체키가 있다.![]()
기본키 : Primary Key, PK라고 많이 부른다. 유일성과 최소성을 만족하는 키이다.외래키 : Foreign Key, FK라고 부른다. 다른 테이블의 PK를 참조하는 값이다.후보키 : candidate key, 기본키가 될 수 있는 후보들대체키 : alternative key, 후보키가 두 개 이상일 경우 어느 하나를 PK로 지정하고 남은 후보키슈퍼키 : super key, 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키