컴퓨터 시스템에 저장된 정보나 데이터를 모두 모아 놓은 집합
web client-> web application server
-> database
숫자
, 영상
, 이미지
, 글씨
,등 모든 컴퓨터에서 구현되는 것들
1) 데이터를 오랜기간 저장
및 보존
하기 위해서 데이터 베이스를 사용합니다.
!!! 메모리에 존재하는 데이터는 오래 보존이 되지 않습니다. !!!
2) 데이터를 체계적으로 보존하고 관리하기 위해 사용합니다.
필요할 때 언제든 내가 원하는 자료를 쉽게 읽어낼 수 있어야만 의미 있는 정보
관계형 데이터베이스 (RDBMS, Relational DataBase Management System)는
데이터 사이의 관계에 기초를 둔 데이터베이스 시스템을 말한다.
관계형 데이터베이스에서 모든 데이터는 2차원 테이블(table)로 표현할 수 있습니다.
Column (열)
: 컬럼은 테이블의 각 항목
(id, 책 제목, 작가, 출판사, 가격)
Row (행)
: 로우는 각 항목들의 실제 값
(갈매기의 꿈, 리처드 바크, 나무옆의자, 11,520)
각 로우(Row)
는 저만의 고유 키(Primary Key)
가 있습니다. !!!고유 키는 id 번호를 의미함!!!
각각의 테이블들이 상호관련성을 가지고 연결되어있다.
One to One
,One to Many
,Many to Many
한국어로는일대일
,일대다
,다대다
관계라고 부릅니다.
대한민국 사람들은 오로지 한명이 하나의 주민등록 번호만을 가질 수 있습니다. 두개를 가지는것은 절대적으로 불가능합니다.
이런 경우 데이터들이 서로 하나씩만 연결이 된 경우에, 해당 테이블 사이의 관계를 일대일
관계 라고 부릅니다.
user
라는 테이블이 있기에 user_id
를 저장함으로 써 user
를 참조합니다.
고유 키(Primary Key)
를 참조한 컬럼에 입려되어 있는 숫자들에도 이름이 있습니다.
이를 외래 키(Foreign Key)
라고 하며
user_id
같은 경우를 의미하는 키입니다.
주인에게는 여러 반려 동물을 등록 할 수 있지만,
반려동물에게는 주인을 한명만 등록할 수 있다고 가정을 하였을때.
한 테이블의 로우 하나가 다른 테이블의 여러 로우와 연결되는 경우를 일대다
관계라고합니다.
일대일
과일대다
의 차이점은
1:1
은 두 테이블이 서로가 서로의 오로지 한 로우에만 연결되어야만 합니다.
1:N
은 한 테이블의 로우 하나에 다른 테이블의 로우 여러개가 연결될 수 있습니다.
위 내용을 보았을 때 한 로우(row)
에 여러 데이터가 들어가 있기때문에 정규화 제 1법칙
을 위반하는 상황입니다.
꼭! 테이블의 행 하나에는 딱 하나의 데이터만 들어가야 한다는 사실을 알아야 합니다.
위 테이블 처럼 로우 하나에 하나의 데이터만이 있게 만들어야합니다.
하지만 위 처럼 작성을 하면 불필요하게 같은 작가수에 맞게 똑같은 데이터를 여러 번 저장해 야하는 번거로움이 있고 불필요한 데이터가 늘어나게 됩니다.
이를 해결하기위해서는 Foreign Key
를 사용하게 됩니다.
이렇게 두 테이블을 사용할때는 중간다리 역할을하는중간 테이블(Authors 테이블)
을 하나 생성해야합니다.
Authors 테이블
의 로우 하나는Books 테이블
의 여러 로우와 연결됩니다.
Books 테이블
의 로우 하나 또한Authors 테이블
의 여러 로우와 연결됩니다.
이와 같은 경우에서 테이블 authors와 테이블 books는 서로 다대다 관계이다. 라고 표현합니다.
one-to-one
: A 테이블의 한 데이터는 B 테이블의 데이터 하나와만 연결됩니다.
one-to-many
: A 테이블의 데이터가 B 테이블의 여러 데이터와 연결될 수 있습니다.
many-to-many
: A 테이블과 B 테이블 모두 서로 여러 데이터와 연결될 수 있습니다.