일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- HTTP
- MongoDB
- Prisma
- 게임 서버 아키텍처
- Express.js
- html5
- localstorage
- router
- Next
- ccw 알고리즘
- map
- insomnia
- JavaScript
- 자바스크립트
- branch
- ucpc 2023 예선 i번
- pm2
- Github
- ucpc 2024 예선 e번
- 그리디
- 지금 자면 꿈을 꾸지만
- MySQL
- 더 흔한 색칠 타일 문제
- ERD
- 백준 28303번
- string
- 백준 32029번
- PROJECT
- ucpc 2023 예선 d번
- 백준 32028번
Archives
- Today
- Total
dh_0e
[Node.js] 강의 내용 개념 정리(1) (RDB, SQL 제약 조건) 본문
관계형 데이터베이스(RDB)
- 정형화된 데이터를 관리하거나 복잡한 비즈니스 로직을 구현하기에 적합하지 않다는 문제점이 있음
ex) MongoDB에서 여러 컬렉션을 합쳐 조회하려고 할 때, 특정 필드가 존재하지 않는다면 문제 발생
> 이와 같은 문제점을 해결하기 위해 데이터의 정규화와 무결성을 보장하면서 정형화된 데이터를 효과적으로 관리할 수 있는 관계형 데이터 베이스(RDB)가 탄생함
- 관계형 데이터베이스는 각 데이터를 '테이블'이라는 표 형태의 구조에 저장
- 테이블 간에 연관 관계를 설정할 수 있음 즉, 여러 테이블에 분산된 데이터를 서로 연결하여 관리할 수 있음
- 각 테이블은 고유한 데이터를 나타내는 행(row)과 데이터의 속성을 나타내는 열(column)을 가짐
관계형 데이터베이스(RDB) vs 비관계형 데이터베이스(NoSQL)
- 데이터 형식이 자유로웠던 비관계형 데이터베이스와 달리 관계형 데이터베이스는 "테이블"이라는 개념이 존재하여 엑셀의 표와 같이 여러개의 열과 행을 가짐
- 엑셀 파일 - 데이터베이스 / 엑셀 시트 - 테이블 / 행 - 데이터
- 비관계형 데이터베이스는 유연한 데이터 구조를 가지므로 저장과 읽기 작업이 더욱 빠르며, 복잡한 비즈니스 로직 없이 주로 데이터 읽기와 쓰기에 중점을 둔 서버에서 사용 (빅데이터 환경이나 단순 페이지뷰가 많은 application)
- 관계형 데이터베이스는 더욱 복잡한 비즈니스 로직과 정형화된 데이터를 체계적으로 관리할 수 있어 더욱 안전한 서버 환경 구성이 가능함 (보안이 중요한 기관이나, 은행과 같은 안정성을 중시하는 회사)
MySQL
- 가장 널리 사용되는 오픈소스 관계형 데이터베이스(RDB)
- 다른 DBMS와 달리 라이센스 비용이 들지 않음 (엔터프라이즈 버전에선 추가적으로 비용 발생)
- 트랜잭션의 특징인 ACID를 준수하여 구현되어 트랜잭션을 안전하게 처리할 수 있음
트랜잭션이란?
RDS
- AWS에서 제공하는 관계형 데이터베이스 서비스(RDB)
- 서버 운영, 유지보수, 백업과 같이 데이터베이스 관련 작업을 AWS에게 위임하여 백엔드 개발자가 데이터베이스를 사용하는 것에 집중할 수 있게 해줌
SQL 제약 조건
- 각 컬럼들간의 제한사항을 관리하고, 조건을 위반하는 데이터를 방지하여 데이터베이스의 무결성을 보장하는 규칙
무결성: 데이터가 결함없이 정확하고 완전한 상태를 의미
제약 조건의 종류
- 고유 제약 조건(Unique): 특정 컬럼이 중복된 키를 가질 수 없는 조건, 사용자 아이디, 이메일과 같은 고유한 정보를 저장할 때 사용
- NULL 제약 조건(NULL): 특정 컬럼이 아무런 값을 입력받지 않도록 or 무조건 값을 입력 받도록 설정하는 조건, 데이터가 없다면 NULL을 저장하여 데이터가 존재하지 않는다는 것을 표현
- 기본 키 제약 조건(Primary Key): 테이블 내에서 각 행을 고유하게 식별할 수 있도록 보장하는 조건
- 외래 키 제약 조건(Foreign Key): 테이블간의 연관 관계를 설정하는 조건, 한 컬럼이 다른 테이블의 컬럼 or 행을 참조하도록 설정하는 조건
외래 키 제약 조건 심화
- 외래 키의 경우 다른 테이블과 관계를 맺고 있는 참조 데이터가 삭제 or 수정될 때 어떤 행위를 해야 하는지 설정할 수 있음.
- 이를 연계 참조 무결성 제약 조건이라 함
연계 참조 무결성 제약 조건의 종류
1. CASCASDE: 참조하고 있는 개체가 변경/삭제 될 경우 함께 변경/삭제 됨
FOREIGN KEY (userId) REFERENCES Users(userId)
ON DELETE CASCADE
ON UPDATE CASCADE;
2. NO ACTION: 참조하고 있는 개체가 변경/삭제 될 경우 아무런 행위를 하지 않고 에러를 발생시킴
FOREIGN KEY (userId) REFERENCES Users(userId)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
3. SET NULL: 참조하고 있는 개체가 변경/삭제 될 경우 현재 데이터를 NULL로 변경
FOREIGN KEY (userId) REFERENCES Users(userId)
ON DELETE SET NULL
ON UPDATE SET NULL;
4. SET DEFAULT: 참조하고 있는 개체가 변경/삭제 될 경우 현재 데이터를 기본 값으로 변경
FOREIGN KEY (userId) REFERENCES Users(userId)
ON DELETE SET DEFAULT
ON UPDATE SET DEFAULT;
SELECT JOIN 연산자
- 두 테이블 사이의 공통된 데이터를 기준으로 테이블을 연결하여 하나의 테이블처럼 조회할 수 있게 해주는 연산자
- SQL의 제약 조건이 아님
- 여러 테이블 간의 외래 키로 설정된 컬럼들을 연결하여 조회하는 SELECT 연산자의 활용법 중 하나
- JOIN 연산자는 데이터를 조회할 때, 여러 테이블들의 연간 관계를 포함하여 데이터를 조회함
별칭(alias)
- 여러 개의 테이블을 참조할 때, 특정 테이블을 간단하게 나타내기 위해 별명을 붙이는 것
- JOIN ... ON: 두 개 이상의 테이블을 결합할 때, 어떤 조건으로 테이블을 결합할 것인지를 정의함
- ON 뒤에는 결합 조건이 위치하며 두 테이블 간의 관계를 정의함
'내일배움캠프 > Node.js[숙련]' 카테고리의 다른 글
[Node.js] 강의 내용 개념 정리(6) (Access Token, Refresh Token) (0) | 2024.05.27 |
---|---|
[Node.js] 강의 내용 개념 정리(5) (인증, 인가, 사용자 인증 미들웨어) (0) | 2024.05.27 |
[Node.js] 강의 내용 개념 정리(4) (JWT) (0) | 2024.05.24 |
[Node.js] 강의 내용 개념 정리(3) (Cookie, Session) (0) | 2024.05.24 |
[Node.js] 강의 내용 개념 정리(2) (Prisma) (0) | 2024.05.23 |