[DB]관계형 데이터베이스 설계

hoifoi·2024년 1월 12일
post-thumbnail

들어가며

현업에서는 이미 설계된 데이터베이스를 숙지하면서 업무를 시작하겠지만
무에서 유를 창조하는 것은 아주 좋은 경험이라고 생각한다
내가 집에서 세발 자전거를 타다가 넘어지고 묘기를 부리기까지 하더라도
직장에서 타는 두발 자전거에 큰 도움은 안될수도 있지만
덜 넘어지고, 운 좋으면 묘기도 부릴 수 있는 확률이 생기니까
(하다 못대 다리 근력이라도..?)

기초적인 개념

프라이머리 키 (Primary Key)

  • 개념
    테이블에서 각 행을 식별하는 유일한 식별자
    (의미적으로는 이름이나 주민등록번호 같은 고유값으로 볼 수있는데
    개념적으로는 데이터 등록시마다 생성되는 ID값이라고 생각해주면 된다!)
  • 활용
    특정 데이터를 대표하는 유일한 식별값으로서 사용
    (특정 데이터를 유일하게 구별할 수 있기 때문에 검색에도 용이)
    분리된 다른 테이블과의 참조에서도 사용하기 좋음
    (고유값이기 때문에 다른 테이블과의 연결점으로 사용하기가 좋다)

포린 키 (Foreign Key):

  • 개념
    다른 테이블에서 프라이머리 키를 참조하는 키
    (프라이머리키를 분리된 테이블에다가 복제를 하고 거기에 연결이 된다고 생각하면 됨)
  • 활용
    관계를 맺어 다른 테이블과의 관계를 설정
    (정규화된 테이블과의 연결점을 만들 수가 있다)

자 이렇게 배운 개념을 통해

테이블과 테이블 간의 관계를 어떻게 맺는지 조금 더 알아봅시다!

테이블간의 관계

일대일 관계 (One-to-One Relationship):

  • 개념
    한 테이블의 각 행이 다른 테이블의 한 행과만 관련 있는 경우
  • 활용
    주로 성능이나 데이터 정규화를 위해 사용
  • 예시
    USERS의 ID가 1인 데이터는 USERS_DETAILS의 오직 한개의 데이터와 연결된다

일대다 관계 (One-to-Many Relationship)

  • 개념
    한개의 행이 다른 테이블의 여러 행과 관련이 있는 경우
  • 활용
    보통 부모 자식관계나 여러 카테고리에 속한 상품 관련 데이터에 사용
  • 예시
    INSTRUMENT의 악기가 INSTRUMENT_DETAILS의 여러 카테고리에 속할 수 있음

다대다 관계 (Many-to-Many Relationship)

  • 개념
    여러 행이 각각 다른 테이블의 여러 행과 관련 있는 경우
  • 활용
    테이블과 테이블 사이의 중간 테이블을 만들어 관계의 복잡성을 해소
  • 예시
    STUDENTS의 한 학생이 SUBJECTS의 여러 과목을 수강할 수 있음

조금 특이한 경우

자기 참조

  • 개념
    일대다의 경우와 비슷하지만 독립테이블이 비효율적이거나
    독립해야 할만큼의 충분히 많은 데이터가 없을 경우
  • 활용
    입력된 데이터를 같은 테이블의 다른 칼럼에 다시 입력
  • 예시
    USERS의 ID를 RECOMMENDER_USER_ID로 재입력하여 사용할 수 있음

마무리

기본만큼 중요한 것은 없는 것 같다
하지만 기본만 알았을때에는 또 많은 것을 할 수는 없다
엄청난 기능과 지식이 넘치는 개발분야에서는 기본을 잊지 않고
잘 활용하는 것이 중요한 것 같다!

앞으로 정말 기본적인 것 외에
고급 개념에도 영향이 많이 끼치는 클래식한 지식은 계속해서 다뤄봐야겠다
여러분도 잊지말고 계속해서 나아가시길..!

++
발돋움 중인 예비 개발자 입니다.
태클 및 의견 공유 언제나 환영 :D

profile
컨텐츠 기획자 출신 백엔드 개발자 :D

0개의 댓글