데이터베이스(2)

G·2021년 6월 30일
0
post-thumbnail

관계형 데이터베이스

관계형 db는 구조화된 데이터들이 하나의 테이블 형식으로 표현이 된다.
마치 엑셀??처럼!

관계형db의 키워들에 대해 알아보자.

데이터 : 각 항목에 저장되는 값.
테이블(relation이라고도 함) : 사전에 정의된 행과 열로 구성되어 있는 체계회된 데이터
필드(or column) : 테이블에서 열을 가리킴
레코드(or tuple) : 테이블에서 한 행의 저장된 정보를 뜻함
키 : 테이블의 각 레코드를 구분할수 있는 값. 각 레코드마다 고유값이어야하며 기본키(primary key)와 외래키(foreign key)등이 있다.

관계 종류

테이블들간에 관계는 이 3가지로 나타낼 수 있다.
1:1
1:N
N:N

1:1관계

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

각각의 테이블이 있다고 가정.

User테이블에는 유저의 이름과 phone_id라는 외래키(fk)를 지니고 있다.

phonebook테이블에서는 phone_number를 저장하고있는 상태.

말로 잘 풀어내면, 한 개의 전화번호당 한명의 유저를 가지고 한 명의 유저당 한개의 전화번호를 가지고있다.

이런식으로 역이 동일하게 작용한다면,
이 관계는 1:1관계(one-to-one relationship)라고 부른다.

근데 1:1관계는 흔치않다. 위에서 보면 한명의 유저당 한 개의 전화번호를

가진다고하면 그냥 User테이블 하나로 몰아넣어도 되기 때문이다.

결론적으로 굳이?? 테이블을 나눠야할 필요가 있냐 이말이다.

1:N 관계

테이블 레코드 하나당 여러개의 레코드와 연결되어있는 경우를 말한다.

한명의 User는 여러개의 전화번호를 가질수 있고,
한개의 전화번호는 한명의 User만 가질 수 있다.

한국말로 잘 풀어보면 얼추 이해가 될거다.

N:N 관계

다대다 관계인 경우 1:N 관계가 두개라고 생각하면 된다.
이 경우 이 두 테이블을 연결해주는 테이블이 생기는데 이를 조인테이블이라고 한다.

한 명의 Customer은 여러개의 Customer_package(여행상품)를 가질 수 있고, 한개의 Package(여행상품)는 여러명의 Customer(고객)를 가질 수 있다.

위와같이 가운데의 테이블은 Customer과 Package테이블을 연결해주는 조인 테이블의 역할을 하며,
이 조인테이블을 통해서 어떤 고객이 어떤 패키지상품을 가지고 있는지 또는 반대로 어떤 패키지상품이 어떤 고객들을
가지고 있는지 확인할 수가 있다. 중요한점은 이 조인테이블에도 pk(기본키)가 반드시 존재해야한다.

다대다 테이블의 경우 억지로 쥐어짜내기가 아직 좀 힘들다. 하다보면 익숙해지겠지...

profile
Drarreg

0개의 댓글