
구조화된 데이터를 전기적인 형태로 저장한 저장소
구조화?
정보를 쉽게 인출 할 수 있도록 한 편성 방식
데이터?
넓은 의미에서 의미 있는 정보를 가진 모든 값

database를 체계적이고 관리하고, 효율적으로 데이터를 처리 하기 위한 시스템 소프트웨어
database
데이터를 오래 보존하고 체계적으로 관리하기 위함
DBMS
MySQL 예시)

column(열): 세로축 테이블의 각 항목(id, title, author, publisher, price)을 의미
row(행): 가로축 각 항목들의 실제 값
Primary Key(id): 각 row는 다른 row와 겹치지 않도록 하는 고유한 번호를 가지고 있다 PK를 이용해 특정 row를 찾거나 인용할 수 있다.
테이블A의 하나의 row는 테이블B의 데이터 하나의 row와 연결될 수 있다.
테이블A row와 연결된 테이블B의 row 중 한 Column이 테이블A의 primary key를 참조한다 이 column을 foreign key라고 한다.
player table

team_uniform_number table

player + team_uniform_number table

선수들은 자신의 팀에서 하나의 번호만 부여 받을 수 있고, 그 번호를 달고 뛰는 선수는 그 팀에서 한명 뿐이다.
team_uniform_number table의 player_id가 player table의 id 값을 참조한다.
테이블A의 하나의 row는 테이블B의 여러 row들과 연결 된다.
테이블 A의 한 row와 연결된, 테이블B의 여러 row가 연결됨으로 테이블B의 foreign key는 중복 될 수 있다.
categories table

contents table

categories + contents table

영화, 노래, 책의 분류에 들어가는 많은 작품이 있지만, 작품은 영화 , 노래, 책 중 한 분류에만 속할 수 있다.
contents table의 categories_id가 categories table의 id 값을 참조한다. categories_id 값은 중복 될 수 있다.
테이블A의 여러 row들과 테이블B의 여러 row들이 연결된다.
한 column에는 하나의 데이터만 들어가야 하기 때문에,
두 테이블에 속한 데이터들의 조합을 입력하기 위한 중간 테이블이 필요하다.
중간 테이블의 column들에는 테이블A와 테이블B의 id를 각각 참조하는 foreign key가 들어간다.
actors table

works table

중간 테이블

actors + works

ACID를 보장하면서, 여러 작업이 마치 연결된 하나의 작업처럼 취급되어서 모두 다 성공하거나 아니면 모두 다 실패하는 것을 의미
중간 단계 까지 실행되고 실패하는 일이 없도록 하는 것
트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태를 유지하는 것을 의미
하나의 트랜잭션을 수행 시 다른 트랜잭션 작업이 방해 하지 못하도록 보장하는 것을 의미
성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미