TIL.4 Database

Hoontae.KIM·2021년 7월 12일
0
post-thumbnail

1.Database

컴퓨터 시스템에 저장된 정보나 데이터를 모두 모아 놓은 집합
web client-> web application server
-> database

데이터(data)

숫자, 영상, 이미지, 글씨,등 모든 컴퓨터에서 구현되는 것들

2. 데이터베이스를 사용하는 이유

1) 데이터를 오랜기간 저장보존하기 위해서 데이터 베이스를 사용합니다.
!!! 메모리에 존재하는 데이터는 오래 보존이 되지 않습니다. !!!

2) 데이터를 체계적으로 보존하고 관리하기 위해 사용합니다.
필요할 때 언제든 내가 원하는 자료를 쉽게 읽어낼 수 있어야만 의미 있는 정보

3. 관계형 데이터베이스

관계형 데이터베이스 (RDBMS, Relational DataBase Management System)는
데이터 사이의 관계에 기초를 둔 데이터베이스 시스템을 말한다.

관계형 데이터베이스에서 모든 데이터는 2차원 테이블(table)로 표현할 수 있습니다.

Column (열) : 컬럼은 테이블의 각 항목
(id, 책 제목, 작가, 출판사, 가격)
Row (행) : 로우는 각 항목들의 실제 값
(갈매기의 꿈, 리처드 바크, 나무옆의자, 11,520)

로우(Row)는 저만의 고유 키(Primary Key)가 있습니다. !!!고유 키는 id 번호를 의미함!!!


각각의 테이블들이 상호관련성을 가지고 연결되어있다.

4. 테이블 사이 관계의 종류

One to One, One to Many, Many to Many 한국어로는 일대일, 일대다, 다대다 관계라고 부릅니다.

1) One To One - 일대일

대한민국 사람들은 오로지 한명이 하나의 주민등록 번호만을 가질 수 있습니다. 두개를 가지는것은 절대적으로 불가능합니다.
이런 경우 데이터들이 서로 하나씩만 연결이 된 경우에, 해당 테이블 사이의 관계를 일대일 관계 라고 부릅니다.

user 라는 테이블이 있기에 user_id를 저장함으로 써 user를 참조합니다.

고유 키(Primary Key)를 참조한 컬럼에 입려되어 있는 숫자들에도 이름이 있습니다.
이를 외래 키(Foreign Key)라고 하며
user_id같은 경우를 의미하는 키입니다.

2) One To Many - 일대다


주인에게는 여러 반려 동물을 등록 할 수 있지만,
반려동물에게는 주인을 한명만 등록할 수 있다고 가정을 하였을때.
한 테이블의 로우 하나가 다른 테이블의 여러 로우와 연결되는 경우를 일대다 관계라고합니다.

일대일일대다차이점
1:1은 두 테이블이 서로가 서로의 오로지 한 로우에만 연결되어야만 합니다.
1:N은 한 테이블의 로우 하나에 다른 테이블의 로우 여러개가 연결될 수 있습니다.

3) Many To Many - 다대다

  • 한 작가는 여러 권의 책을 쓸 수 있습니다.
  • 한 책에도 작가는 여러명이 될 수 있습니다.

위 내용을 보았을 때 한 로우(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 테이블 모두 서로 여러 데이터와 연결될 수 있습니다.

profile
💻 STUDY RECORD

0개의 댓글