터미널 명령어
pwd
: Print Working Directory = 현재 위치(경로) 출력
~
: home Directory (ex. cd ~)
ls
: List Segments = 현재 위치 파일 목록 출력
cd
: Change Directory = 디렉토리(폴더) 이동
mkdir
: Make Directory = 디렉토리(폴더) 생성
touch
: 파일 생성,touch .파일명
으로 생성 시 숨김파일로 생성
rm
: remove = 파일 삭제
rm -r
: remove -recursive = 디렉토리(폴더) 삭제 (rm -rf * 하면 큰일 남
)
vi
: ex. vi models.py 파일을 편집할 수 있는 에디터 활성화
i
: insert, 편집모드esc
: 편집모드 종료: wq
: write & quite (저장 & 종료)
데이터베이스 ?
: 컴퓨터 안에 기록되어 있는 숫자 == 데이터, 데이터들의 집합 == 데이터베이스
일반적으로 특정 데이터를 확인하고 싶을 때 간단하게 찾아낼 수 있도록 정리된 데이터의 집합
데이터 보존과 체계적 관리 용이
Database Management System(DBMS) ?
: 데이터베이스를 효율적으로 관리하는 소프트웨어 (!= 데이터베이스)
생산성 향상(C.R.U.D), 기능성(복수유저, 대용량 데이터 등)과 신뢰성(확장성, 부하 분산 등) 확보 목적
*C(create 추가), R(read 데이터검색), U(update 갱신), D(delete 삭제)
대표적인 DBMS에는 오라클(Oracle), MySQL, MSSQL, MariaDB 등이 있다
해당 시리즈에서는 MySQL 사용
One to One
: 테이블 A와 B가 1대1로 연결
One to Many
: 테이블 A가 테이블 B의 여러 데이터와 연결
Many to Many
: 테이블 A가 테이블 B의 여러 데이터와 연결, B도 A의 여러 데이터와 연결
각자 다른 테이블의 여러 데이터와 연결될 때는 데이터가 조합된 중간 테이블이 생성된다Foreign key(외래 키, 외부 키)
: 관계형 데이터베이스에서 한 테이블의 필드(attribute) 중 다른 테이블의 행(row)을 식별할 수 있는 키
참조하는 측의 관계 변수는 참조되는 측의 테이블의 키를 가리킨다
밑의 스타벅스 예시에서 다시 살펴보자ACID
원자성(Atomicity) : 부분적으로 실행되다가 중단되지 않도록 하는 특성
일관성(Consistency) :언제나 일관성 있는 데이터베이스 상태로 유지하는 특성
고립성(Isolation) : 다른 트랜잭션 작업이 끼어들지 못하도록 보장하는 특성
영구성(Durabiltiy) : 수행된 트랜잭션의 내용은 영구히 반영되는 특성
*트랜잭션(Transaction) : ACID를 보장하면서 일련의 작업들이 하나의 작업처럼 취급되어 모두 성공 or 실패 하는 것
Category
Menu_id
FK
: Menu와 one to many 관계Product
Category_id
FK
: Category와 one to many 관계
제품 이름 (한/영), 설명 컬럼 생성Allergy
1) many to many 사용 시 : Product와 Allergy의 id를 many to many로 연결
2) 중간 테이블 생성 시 : products_allergies 테이블 생성 후 Product_idFK
, Allergy_idFK
각각 one to many로 연결