관계형 데이터베이스(RDB)의 키와 관계

JINNI·2024년 5월 22일
0

[TIL] Java+Spring

목록 보기
10/15

RDB(Relational Database)

관계형 데이터베이스는 key-value 형태로 이루어진 데이터들을 테이블(=표)의 형태로 정의하고, 테이블 간의 연관관계를 맺는 방식으로 상호작용할 수 있게 표현한 데이터베이스를 의미한다.
e.g. MySQL, PostgreSQL, Maria DB, Oracle DB

☁️Table 구조

ID이름나이파트구분
1김ㅇㅇ20서버Lead
2이ㅇㅇ24안드로이드YB
3박ㅇㅇ15iOSOB
4최ㅇㅇ43서버명예OB

RDB는 table, 또는 MxN Matrix이다.

  • 열(Column, 세로) : ID, 이름, 나이, 파트, 구분와 같이 값들의 속성을 나타내주는 값

  • 행(Row, record, 가로) : Column에 맞춰 실제 값으로 들어가 있는 가로 줄

  • 고유 식별자 : RDB는 고유 식별자가 필요하다. 위 예시에서는 ID라는 Column이 그 역할을 하고 있음.

  • Relation : DB에서 정보를 구분하여 저장하는 기본 단위. RDB에서는 'Table이 릴레이션된다'고 말한다.

  • Query(질의) : RDB에 접근하기 위해 SQL이라는 언어를 적절히 사용해 데이터베이스에 접근하고 데이터를 생성/수정/조회/삭제한다. 이렇게 데이터베이스에 접근하기 위해 하는 행위를 Query(질의)라고 한다.



Key

기본키인 PK(Primary Key)와 외래키인 FK(Foreign Key)에 대해 알아보자.

☁️PK(Primary Key)

: RDB에서 각각의 행을 식별할 수 있는 Identifier

이름나이파트구분
김ㅇㅇ20서버Lead
이ㅇㅇ24안드로이드YB
박ㅇㅇ15iOSOB
최ㅇㅇ43서버명예OB
최ㅇㅇ23iOSOB

이런 식으로 이름이 같은 데이터가 추가되는 경우, 이름이 식별자가 될 수 없다.
따라서 유일성최소성을 만족하는 해당 데이터를 구분해줄 값이 필요하다. 그것이 바로 기본키(PK)!

  • 유일성 : 하나의 키 값으로 유일하게 식별할 수 있는 성질
  • 최소성 : 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질
    e.g. 사원번호(유일성) + 주민등록번호(유일성)은 최소성 성립 불가. 둘 중 하나만 사용해도 각 데이터를 구분할 수 있기 때문임.
ID이름나이파트구분
1김ㅇㅇ20서버Lead
2이ㅇㅇ24안드로이드YB
3박ㅇㅇ15iOSOB
4최ㅇㅇ43서버명예OB
5최ㅇㅇ23iOSOB

이처럼 식별자가 될 수 있는 ID Column을 추가해 PK를 만들면 된다.

  • PK는 보통 인조키(Aritificial Key)로 설정한다. Table의 각 row에 인위적으로 부여한 값을 의미!
  • Data가 외부에 의존하는 값(개발자가 제어할 수 없는 값)이나 변경 가능성이 있는 값들은 현재 식별자의 역할을 할 수 있더라도 사용하지 않는 것이 좋음.
    e.g. 자연키(Natural Key)

☁️FK(Foreign Key)

: 다른 테이블과의 관계를 표현해줄 수 있는 키

  • 다른 테이블의 기본키를 그대로 참조
  • FK를 이용해 Table 내에서 다른 Table의 row를 식별할 수 있는 Column을 만들 수 있음

관계(Relationship)

Table 간의 관계를 표현하는 방법으로, 일대일 관계, 일대다 관계, 다대다 관계로 표현할 수 있다.

☁️일대일 관계(one to one, 1:1)

: 테이블 하나의 레코드가 다른 테이블의 하나의 레코드와 연관됨

☁️일대다 관계(one to many, 1:N)

: 테이블 하나의 레코드가 다른 테이블의 하나 이상의 레코드와 연관됨

☁️다대다 관계(many to many, N:M)

: 테이블의 여러 레코드가 다른 테이블의 여러 레코드와 연관됨

  • 일반적인 RDBMS에서 두 테이블간의 직접적인 다대다 관계 구현을 허용하지 않음
  • Join Table이라는 추가 테이블을 사용해 다대다 관계를 2개의 일대다 관계로 나눔
    e.g. 한 학생이 들을 수 있는 강의가 여러 개이고, 한 강의를 수강하는 학생도 여러 명임(Member, Lecture) → 나누어서 Member, MemberLecture, Lecture로 분리


참고자료
33기 DO SOPT 서버 파트 2차 세미나 자료(배포 불가)
33기 DO SOPT 서버 파트 3차 세미나 자료(배포 불가)
[DB] 키의 종류, 최소성과 유일성
Google Cloud : 외래 키 관계 만들기 및 관리
FileMaker Pro18Advanced : About Relationships

profile
천재 개발자 되기

0개의 댓글