Database TIL 05

Nabang Kim·2021년 8월 30일

Database

목록 보기
5/8
post-thumbnail

2021년 8월 26일에 작성된 문서 5번 입니다.
데이터 베이스 배운 내용을 정리했습니다.



관계형 데이터베이스

사전에 정의된 테이블(relation)을 사용하는 데이터베이스

<관계형 데이터베이스 키워드>

키워드설명
데이터(data)항목에 저장되는 값
테이블(table 또는 relation)사전에 정의된 열의 데이터 타입대로 작성된 데이터가 행으로 축적
칼럼(column 또는 field)테이블의 한 열
레코드(record 또는 tuple)테이블의 한 행에 저장된 데이터
(key)테이블의 각 레코드를 구분할 수 있는 값, 각 레코드마다 고유한 값을 가짐. 기본키(primary key)와 외래키(foreign key)



관계 종류

테이블과 테이블 사이의 관계

  • 1:1 관계
  • 1:N 관계
  • N:N 관계

테이블 스스로 관계

  • self referencing 관계

1:1 관계

하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우

User table과 Phonebook table의 1:1 관계


테이블 이름특징
Useruser_id
name
phone_id외래키(foreign key), Phonebook 테이블의 phone_id와 연결
Phonebookphone_id
phone_number

각 전화번호가 단 한 명의 유저와 연결되어 있고, 그 반대도 동일하다면, User 테이블과 Phonebook 테이블은 1:1 관계(One-to-one relationship)입니다.


1:1 관계는 자주 사용하지 않는다.

1:1로 나타낼 수 있는 관계라면 User 테이블에 phone_id를 대신해 phone_number를 직접 저장하는 게 나을 수 있다.



1:N 관계

하나의 레코드가 서로 다른 여러 개의 레코드와 연결된 경우

User table과 Phonebook table의 1:N 관계

1:N(일대다) 관계는 관계형 데이터베이스에서 가장 많이 사용.

  • 한 명의 유저가 여러 전화번호를 가질 수 있다.
    • 그러나 여러명의 유저가 하나의 전화번호를 가질 수는 없다.



N:N 관계

여러 개의 레코드가 다른 테이블의 여러 개의 레코드와 관계가 있는 경우

  • N:N(다대다) 관계를 위해 스키마를 디자인 시, Join 테이블 만들어 관리.
  • 1:N(일대다)과 비슷하지만, 양방향에서 다수의 레코드를 가질 수 있다.

여러 개의 여행 상품이 있고, 여러 명의 고객이 있습니다. 고객 한 명은 여러 개의 여행 상품을 구매할 수 있고, 여행 상품 하나는 여러 명의 고객이 구매할 수 있습니다.

Customer table과 Package table

  • N:N 관계는 두 개의 일대다 관계와 모양이 같다.
  • 두 개의 테이블과 1:N(일대다) 관계를 형성하는 새로운 테이블로 N:N 관계를 나타낼 수 있다.

조인 테이블 : N:N 관계를 위한 테이블

Customer table과 Package table의 N:N 관계를 위해 customer_package 테이블을 생성

customer_package 테이블

  • 고객 한 명이 여러 개의 여행 상품을 가질 수 있고, 여행 상품 하나가 여러 개의 고객을 가질 수 있다.
  • customer_idpackage_id를 묶어주는 역할.
  • 조인 테이블을 생성하더라도, 조인 테이블을 위한 기본키(여기서는 cp_id)는 반드시 있어야 한다.


자기참조 관계(Self Referencing Relationship)

테이블 내에서의 관계

자기참조 관계를 가지는 User table

User 테이블

  • user_id : 기본 키(primary key)
  • name : 사용자 이름
  • recommend_id : 추천인 아이디
    • User 테이블의 user_id와 연결

한 명의 유저(user_id)는 한 명의 추천인(recommend_id)를 가질 수 있다.
그러나 여러 명이 한 명의 유저를 추천인으로 등록할 수 있습니다. 이 관계는 1:N(일대다) 관계와 유사하다고 생각할 수 있습니다. 그러나 일반적으로 일대다 관계는 서로 다른 테이블의 관계를 나타낼 때 표현하는 방법입니다.






Written with StackEdit.

0개의 댓글