데이터베이스와 관계형 데이터베이스

진히·2023년 8월 2일
0

공부중🤓

목록 보기
1/17
post-custom-banner

1. Database

  • 데이터베이스는 데이터와 베이스가 합쳐져 만들어진 단어로, 컴퓨터 시스템에 우리가 사용하는 정보나 데이터를 모아 놓은 집합입니다.
  • 데이터들은 데이터베이스 관리시스템(DBMS, Database Management System)으로 제어하고 관리합니다.

🤷‍♀️ 데이터베이스, 왜 사용하는걸까?

  • 데이터를 오랜 기간 저장하고 보존하기 위해
  • 데이터를 체계적으로 보존하고 관리하기 위해


2. 관계형 데이터베이스

데이터베이스는 크게 관계형 데이터베이스비관계형 데이터베이스로 나눌 수 있습니다.
그 중 관계형 데이터베이스에 대해 알아보겠습니다.

👉 관계형 데이터베이스 (RDBMS, Relational DataBase Management System)

데이터 사이의 관계에 기초를 둔 데이터베이스 시스템

관계형 데이터에서 모든 데이터는 2차원의 테이블로 표현할 수 있는데, 아래 예시를 통해 확인해 보겠습니다.

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

각 Row는 언제나 고유한 번호를 갖고 있습니다. 이를 고유 키(Primary Key)라고 합니다.
예를 들어 개미라는 책은 id가 4인 데이터라고 표현할 수 있는데, 이 때 개미의 Primary Key는 4입니다.
Primary Key를 통해 특정 로우를 찾거나, 인용할 수 있습니다.


👉 테이블 사이 관계의 종류

테이블끼리 연결에는 총 3가지의 종류가 있습니다.

1. 일대일(one to one)


위와 같이 한 사람이 단 한 개의 주민등록번호를 가질 수 있는 것처럼 일대일 관계가 그러합니다.
각각의 데이터들이 서로 하나씩만 연결된 경우, 해당 테이블 사이의 관계를 일대일관계라고 부릅니다.

위 테이블을 하나의 테이블로 표현한다면 아래와 같을겁니다.

하지만 이처럼 표현한다면 같은 이름들을 중복해서 저장하여 불필요한 메모리를 사용할 수 있습니다.
따라서 user 란에 이름을 직접 저장하기 보다 user_id를 저장하였습니다.
그리고 이를 참조한다라고 표현합니다.

Identification numbers 테이블의 user 컬럼은 users 테이블의 id(pk)를 참조한다.

pk를 참조한 칼럼에 입력되어있는 숫자는 Foreign Key 또는 외래키라고 합니다. Indentification numbers 테이블의 user_id는 모두 KF라고 부를 수 있습니다.

이러한 상황을 도식화 하면 아래처럼 나타낼 수 있습니다.
📌 테이블 Users와 테이블 Indentification은 서로 일대일 관계이다. 라고 표현합니다.

2. 일대다(One to Many)

한 테이블의 로우 하나가 다른 테이블 의 여러 로우와 연결이 되는 관계를 말합니다.

User 테이블 로우 하나는 Pets 테이블의 여러 로우와 연결.
Pets 테이블의 로우 하나는 User 테이블의 로우 하나와 연결.

1:N이라고도 표현하고 아래와 같이 도식화 할 수 있습니다.
📌 테이블 users와 테이블 pets은 서로 일대다 관계이다. 라고 표현합니다.

3. 다대다(Many to Many)

한 테이블의 여러 로우가 다른 테이블의 여러 로우와 연결이 되는 관계입니다.
가령 책과 책 작가 사이의 관계가 그러합니다.

하지만 데이터베이스는 여러 데이터를 넣을 수 없어서 테이블의 행 하나에는 딱 하나의 데이터만 들어가야 합니다.
authors 컬럼에 해당하는 로우 하나에 여러 데이터가 들어가있기 때문에 정규화 제 1법칙을 위반합니다.
행 하나에 하나의 데이터만 넣어 테이블을 다시 만들자면 아래와 같습니다.

작가의 이름, 책 제목, 가격이 중복됩니다.
이럴 경우 똑같은 데이터를 여러 번 저장해 주어야 하는 문제가 발생하는데, 이러한 문제는 Foreign Key로 중복된 데이터를 줄여 해결할 수 있습니다.
📌 테이블 author와 테이블 books는 서로 다대다 관계이다. 라고 표현합니다.


Q. 어떻게 테이블을 연결하나요?

Foreign Key를 사용하여 주로 연결합니다.

Q. 왜 테이블을 연결하나요?

동일한 정보들이 불필요하게 중복되어 저장되면 더 많은 디스크를 사용하게 되고, 잘못된 데이터가 저장될 가능성이 높아집니다.

만약 고객의 아이디는 동일한데 이름이 서로 다른 로우가 있다면 테이블을 나누어서 저장한 후 필요한 테이블끼리 연결시켜 문제를 해결할 수 있는데,

  • 중복된 데이터를 저장하지 않아 디스크를 더 효율적으로 사용할 수 있고
  • 서로 같은 데이터이지만 부분적으로만 내용이 다른 데이터가 생기는 문제가 없어집니다.
  • 이것을 normalization 정규화라고 합니다.
profile
티모누나예요🐶
post-custom-banner

0개의 댓글