kibitzing / EnGrow

Let Engineers Grow!
0 stars 0 forks source link

Database #1

Open kibitzing opened 1 month ago

kibitzing commented 1 month ago

Database를 배워보자 총 31강, 매일 하나씩 11월 15일 전 완강 목표!

https://www.youtube.com/watch?v=aL0XXc1yGPs&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe

kibitzing commented 1 month ago

1강, 오 엄청 알차다. 쭉 오버뷰 해주시는 느낌

kibitzing commented 1 month ago

2강

여러 개념들을 머리에 때려박아 넣어주심..ㄷㄷㄷ

먼저 튜플 개념. cartesian product 쉽게 생각해서 DB의 한 행 (row)는 하나하나가 다 tuple이다. relation = set of tuple set 이니까 당연히 중복 안됨, 순서 중요하지 않음 수학에서 관계를 어떻게 표현하지? 생각해보면 가장 쉽고 간단한게 한데 묶어놓는 것일 거 같다.

relational data model은 이 relation이라는 개념을 가지고 데이터를 모델링한 것

주요 개념들

domain: set of atomic values

domain name: domain 의 이름 attribute: 도메인이 하는 (relation에서 맡은) 역할 (목적), 역할의 이름 = attribute 이름 tuple: 각 attribute 값들로 이뤄진 리스트 relation = set of tuple relation name

relation scheme: relation name + attribute list e.g. STUDENT(id, name, grade, ...)

degree of relation = len(attribute list)

relational DB: relational data model에 기반으로 구조화된 DB, 여러개의 relation으로 구성됨

RDB = relation scheme + integrity constraints set

relation은 set이므로 중복 불가, 각 tuple은 unique

Key

superkey: unique, minimum 은 아님, 전체 튜플은 슈퍼키 candidate key: minimal superkey, 그냥 key라고도 불림

Constraints

kibitzing commented 1 month ago

3강 SQL 쭈루룩 (1/2)

데이터 타입 쭉 훑어 보기

kibitzing commented 1 month ago

3강 SQL 쭈루룩 (2/2)

오늘도 매우 유익하다..

여러 constraints & option

CHECK(start_date < end_date)

PRIMARYKEY(empl_id, proj_id) 이렇게도 됨

on delete OPTION on update OPTION

FOREIGN KEY (dept_id) references DEPARTMENT(id)
on delete SET NULL on update CASCADE,
CHECK(salary >= 5k)

constraint 에 이름 붙이기

age CONSTRAINT age_over_20 CHECK(age > 20)

ALTER TABLE department ADD FOREIGN KEY(leader_id)
REFERENCES employee(id)
on update CASCADE
on delete SET NULL;

이런식으로 테이블 스키마 변경할 때 사용

테이블 삭제: DROP