데이터베이스?
- 구조화된 정보 또는 데이터의 조직화된 모음
- 데이터를 쉽게 공유하기 위해 체계적으로 관리되는 데이터의 집합
- RDB(관계형 데이터베이스)와 NoSQL(비관계형 데이터베이스)로 분류됨
RDB?
- 관계형 데이터베이스
관계형 데이터베이스는 정해진 형식이 있지만 비관계형 데이터베이스는 데이터의 형식과 구조가 변형될 수 있음
주문 번호 | 고객 이름 | 고객 지역 | 주문 상품 |
1 | 제니 | 부산 | 감자칩 |
2 | 로제 | 서울 | 고구마칩 |
3 | 채채 | 부산 | 감자튀김 |
4 | 채채 | 부산 | 고구마칩 |
- 행과 열로 이루어진 표 → Table, Entity
- 각 행(row)의 데이터 → Record, Tuple, Row
- 각 열(column)의 데이터 → Field, Column
- 열(column) 이름의 집합 → Attribute
예시에서 살펴보면 주문 테이블이 Table, Entity
(1, 제니, 부산, 감자칩) 이 Record, Tuple
(제니, 로제, 채채, 채채) 이 Field
주문 번호, 고객 이름, 고객 지역, 주문 상품이 Attribute가 된다.
RDB와 데이터 관계
키? 데이터들 간 중복되지 않는 고유한 값
데이터 사이에는 중복 값이 있을 수 있으므로, 해당 데이터가 가진 고유한 값인 키로 데이터를 찾아야 한다.
1. Primary Key(PK)
tuple을 식별할 수 있게 만드는 key
주문 번호 | 고객 이름 | 고객 지역 | 주문 상품 |
1 | 제니 | 부산 | 감자칩 |
2 | 로제 | 서울 | 고구마칩 |
3 | 채채 | 부산 | 감자튀김 |
4 | 채채 | 부산 | 고구마칩 |
- 위의 예시에서 주문번호는 중복되는 튜플이 없으므로 PK로 사용될 수 있다.
- 그러나 고객 이름의 경우, 중복되는 내용이 있으므로 PK로 사용될 수 없다.
2. Foreign Key(FK)
2개의 테이블에서 서로 참조 관계일 때 사용하는 key
아래의 주문 테이블과 고객 테이블 예시
주문 번호 | 고객 번호 | 주문 상품 |
1 | 11 | 감자칩 |
2 | 22 | 고구마칩 |
3 | 33 | 감자튀김 |
주문 테이블
고객 번호 | 고객 이름 | 고객 지역 |
11 | 제니 | 부산 |
22 | 로제 | 서울 |
33 | 채채 | 부산 |
고객 테이블
이 때, 고객 번호는 두 테이블의 관계를 맺어줄 수 있음
여기서 주문 테이블의 고객 번호는 고객 테이블의 고객 번호를 참조하는 foreign key이다.
3. Foreign Key와의 관계
- 일대일(1:1) 관계
두 테이블이 서로 1:1 관계를 맺는다는 것
예) 사람 테이블과 주민등록번호 테이블 - 일대다(1:N) 관계
두 테이블이 서로 1:N 관계를 맺는다는 것
예) 블로그 계정 테이블과 블로그 게시글 테이블 - 다대다(N:M) 관계
두 테이블이 서로 N:M 관계를 맺는다는 것
예) 학생 테이블과 학원 테이블
쿼리?
쿼리란 데이터베이스에게 물어보는 문장을 뜻한다.
즉, 데이터베이스의 특정 데이터에 대하여 찾거나 편집을 위해 요청하는 것이다.
이러한 요청의 종류는 조회, 수정, 생성, 삭제로 구분되는데, 이 것이 REST API의 4가지 요소인 CRUD이다.
참고: 백엔드를 위한 Django Rest Framework with 파이썬
'BackEnd' 카테고리의 다른 글
DBMS(Database Management System), ERD(Entity Relationship Diagram), SQL(Structured Query Language) (0) | 2024.04.30 |
---|---|
API와 REST API (0) | 2024.04.26 |
웹(Web) (1) | 2024.04.26 |