본 내용은 내일배움캠프에서 활동한 내용을 기록한 글입니다.
각 데이터를 테이블이라는 표 형태의 구조에 저장
테이블 간에 연관 관계를 설정할 수 있으며, 이를 통해 여러 테이블에 분산된 데이터를 서로 연결하여 관리할 수 있음
비관계형 데이터베이스(NoSQL)는 유연한 데이터 구조를 가지고 있기 때문에 저장과 읽기 작업이 더욱 빠름
그래서 복잡한 비즈니스 로직 없이 주로 데이터 읽기와 쓰기에 중점을 둔 서버에서 주로 사용됨 ex) 빅데이터 환경, 단순 페이지뷰가 많은 어플리케이션
관계형 데이터베이스(RDB)는 더욱 복잡한 비즈니스 로직과 정형화된 데이터를 체계적으로 관리할 수 있음
그래서 보안이 중요한 기관이나, 은행과 같은 안전성을 중시하는 회사들의 서버에서 주로 사용됨
MySQL은 가장 널리 사용되는 오픈소스 관계형 데이터베이스
데이터베이스를 관리하는 가장 대표적인 언어 SQL(Structured Query Language)을 사용하여 데이터를 조작하고 관리함
트랜젝션의 특징인 ACID를 준수하여 구현된 데이터베이스로, 트랜젝션을 안전하게 처리할 수 있음
제약 조건(Constraint)이란? 컬럼들간의 제한 사항을 관리하고, 조건을 위반하는 데이터를 방지하여 데이터베이스의 유결성을 보장하는 규칙
즉, 데이터베이스 설계 시 제약 조건을 통해 해당 테이블이 어떤 역할을 하는지, 어떤 데이터를 저장하고 있는지 명확하게 인지할 수 있게 도와주는 역할을 함
대표적인 제약 조건의 종류
고유(Unique) 제약 조건
NULL 제약 조건
기본 키 (Primary Key) 제약 조건
외래 키 (Foreign Key) 제약 조건 (⭐⭐)
회원 1명은 주문 N개를 할 수 있음 => 회원 : 주문 = 1 : N 관계
음식 1개는 주문 N개에 포함될 수 있음 => 음식 : 주문 = 1 : N 관계
결과적으로 => 회원 : 음식 = N : M 관계
CREATE TABLE User
(
userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255) NOT NULL UNIQUE
);
CREATE TABLE Food
(
foodId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255),
price int(11)
);
CREATE TABLE Order
(
orderId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
userId int(11) NOT NULL,
foodId int(11) NOT NULL,
createdAt datetime NOT NULL DEFAULT NOW(),
FOREIGN KEY (foodId) REFERENCES Food (foodId)
ON DELETE NO ACTION
ON UPDATE CASCADE,
FOREIGN KEY (userId) REFERENCES User (userId)
ON DELETE NO ACTION
ON UPDATE CASCADE
);
INNER JOIN은 두 테이블에서 일치하는 값을 가진 행을 반환
LEFT JOIN(또는 LEFT OUTER JOIN)은 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환합니다. 일치하는 항목이 없으면 오른쪽 테이블의 열에 대해 NULL 값이 반환됨
RIGHT JOIN(또는 RIGHT OUTER JOIN)은 오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 행을 반환합니다. 일치하는 항목이 없으면 왼쪽 테이블의 열에 대해 NULL 값이 반환됨
FULL OUTER JOIN은 왼쪽 또는 오른쪽 테이블에 일치하는 항목이 있으면 모든 행을 반환합니다. 일치하는 항목이 없으면 일치하지 않는 테이블의 열에 대해 NULL 값이 반환됨
2주차 남은 강의를 시청
최대한 시청 후 과제 문서를 작성할 수 있도록 노력할 것!!
내일도 시간이 많지 않기 때문에 오전, 오후에 최대한 시청할 예정
예비군으로 밀린 강의를 시청함
원래는 2주차를 오늘 안에 다 시청하려고 했으나, 생각보다 내용이 어려웠음
완전히 막힌다기 보다는 내용이 어려워서 검색하면서 이해하느라 진행이 느렸음
현재 2주차 1/3 정도 완료한 상태
주말을 이용해서 최대한 강의를 들을 예정