[STUDY] 240129 | DB | 관계형 데이터베이스

Nimgnos·2024년 3월 8일
0

👾 STUDY

목록 보기
27/40

💻 관계형 데이터베이스(Relational database)

  • 관계형 데이터 베이스란 테이블(table)로 이루어져 있으며 이 테이블은 키(key)와 값(value)의 관계를 나타냄.
  • 데이터의 종속성을 관계(relationship)로 표현하는것이 관계형 데이터베이스의 특징.
  • 관계형 테이블은 행(row)과 열(column)로 구성됨.
  • 테이블은 이름을 가지고 있으며 행과 열은 거기에 대응하는 값을 가진다.
    ➡️ 관계형 데이터베이스는 아래와 같이 구성된 테이블이 다른 테이블과 관계를 맺고 모여있는 집합체

💻 관계형 데이터베이스의 특징

  • 데이터의 분류, 정렬, 탐색 속도가 빠르다
  • 오랫동안 사용된 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장해 준다.
  • 기존에 작성된 스키마를 수정하기 어렵다.
  • 데이터 베이스의 부하를 분석하는 것이 어렵다.

💻 관계형 데이터베이스의 '관계'

📌 1:1(일대일) 관계

  • 두 개의 테이블 A와 B가 있으면 A의 레코드 하나가 B의 레코드 하나와 연결된 관계
    (ex: 한 사람의 주민등록번호와 여권 번호의 경우)
  • (상품 테이블) 1 : 1 (카테고리 테이블)
    ➡️ Association
    ➡️ 상품은 카테고리 1개를 반드시 가지고 있음
  • 일대일 관계는 애초부터 하나의 테이블로 표현하는 경우가 많음.

📌 1:N(일대다) 관계

  • 테이블 A의 레코드 하나가 B의 레코드 여러 개와 연결된 관계
    (ex: 한 사람이 여러 채의 아파트를 가진 경우)
  • (상품 테이블) 1 : N (상품 이미지 테이블)
    ➡️ Collection
    ➡️ 카테고리는 상품을 여러개 가지고 있음
    ➡️ mybatis 기능 사용

📌 N:M(다대다) 관계

  • 테이블 A의 레코드 하나가 B의 레코드 여러 개와, 테이블 B의 레코드 하나가 A의 레코드 여러 개와 연결된 관계
    (ex: 대형마트의 고객과 판매 물품 간의 관계)
  • 다대다 관계를 위처럼 표현할 수는 있으나, 실제로는 구현할 수 없음
    • 프로그래밍으로 풀이 불가
    • 구현하려고 하면 한 고객의 구매 물품 번호에 여러 개의 값을 넣어야 할 수도 있는데, 이는 데이터베이스 제1 정규화를 깨뜨림.
  • 이런 이유로 실제로는 두 테이블 사이를 연결해주는 >>별도의 테이블<<을 만들어서 다대다 관계를 두 개의 일대다 관계로 풀어줌.
  • 이 별도의 테이블을 '교차 엔티티'라고 함.
  • (고객 테이블) N : M (주문 상품)


📌 join을 사용해서 조회한 데이터를 자바로 가져오는 방법

    1. resertMap에 조인해서 조회하는 컬럼명을 result 태그로 직접 기입
    1. resertMap에 테이블간의 관계를 파악(1:1, 1:N)해서 collection 또는 association을 사용
    1. 데이터베이스의 view 개념 적용(장바구니)


📌 resertMap에 테이블간의 관계(1:N) ➡️ collection

ItemVO(itemCode=4
	, itemName=홍콩마카오
    , itemPrice=22000
    , itemStock=0
    , itemIntro=마카오박 카카오박
    , regDate=null
    , cateCode=0
    , imgList=[ImgVO(imgCode=0
    , originFileName=null
    , attachedFileName=1b0e8649-4e69-4b45-bbf4-921d1e62c0e7.jpg
    , isMain=null
    , itemCode=4),
ImgVO(imgCode=0
	, originFileName=null
    , attachedFileName=ae9a7c06-584d-4156-bde0-e7b23452baf3.jpg
    , isMain=null
    , itemCode=4),
ImgVO(imgCode=0
	, originFileName=null
    , attachedFileName=ab3fa2e0-d04d-4a95-868f-8ca852704bd5
    .jpg, isMain=null
    , itemCode=4)])


🔍참고

profile
먹고 기도하고 코딩하라

0개의 댓글