danc
danc*dev
danc
  • 분류 전체보기
    • codestates_BE_bootcamp39
      • 주단위 일기
      • 회고
    • programming
      • JAVA
      • SPRING
      • GENERAL
      • LINUX
      • ALGORITHM
      • ERROR_HANDLING
    • web
      • NETWORK
      • DB
      • HTML
      • CSS
    • kr
    • nz

최근 글

인기 글

태그

  • 코드스테이츠
  • React에서 Authorization헤더
  • TIL
  • HTTP
  • 일기
  • 코드스테이츠 백엔드
  • css
  • TIL 일기
  • 회고
  • 윈도우 11 우분투
  • TIL일기
  • AOP

최근 댓글

티스토리

hELLO · Designed By 정상우.
danc
web/DB

DB 설계

DB 설계
web/DB

DB 설계

2022. 6. 13. 16:36

관계형 데이터베이스

구조화된 데이터는 하나의 테이블로 표현할 수 있다. 사전에 미리 정의된 테이블을 Relation이라고 하기 때문에 테이블을 사용하는 DB를 관계형 데이터베이스 (Relation database)라고 한다.

자주 쓰이는 용어들은 다음과 같다.

  • Data: 각 항목에 저장되는 값
  • Table / Relation: 사전에 미리 정의된 column의 데이터 타입대로 작성된 데이터가 row에 저장된다.
  • Column (field) : 테이블의 한 열
  • Record (tuple) : 테이블의 한 행에 저장된 데이터
  • Key : 각 레코드를 구분할 수 있는 값 - 레코드마다 고유의 값을 갖는다 - Key는 아래의 2가지로 나뉜다.
    • Primary Key (PK - 기본키) 
    • Foreign Key (FK - 외래키)

 

관계의 종류

많이 헷갈리지만 객체지향의 상속과 비슷한 느낌인 것 같다. 어느 쪽이 PK로 잡히는지, FK로 잡히는지 잘 확인해야 한다.

One-to-One 

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

https://www3.ntu.edu.sg/home/ehchua/programming/sql/Relational_Database_Design.html

한 상품의 정보는 해당 상품으로만 연결되어있다. (예 - A상품과 A상품 정보)  이때 productID는 각각 PK로 지정된다.  

One-to-Many 

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

https://www3.ntu.edu.sg/home/ehchua/programming/sql/Relational_Database_Design.html

여기에서 Teachers는 상위 테이블이고 Classes는 하위 테이블의 관계가 된다. Classes.teacherID는 Foreign Key, Teachers.teacherID 는 Primary Key로 설정된다. 

선생님은 0개 이상의 수업을 가르칠 수 있고, 수업은 하나의 선생이 맡아 가르친다.

 

Many-to-Many

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

다대다 관계를 위한 스키마를 디자인할 때에는 Join 테이블을 만들어 관리한다. 1:N 관계와 비슷하지만 양 방향에서 여러 개의 레코드를 저장할 수 있다.

주문과 상품의 관계에서, 여러개의 주문은 여러 상품을 담을 수 있고, 여러 상품도 여러개의 주문에 담길 수 있다. 아래의 예시는 여러 학생은 여러 수업을 등록할 수 있고, 여러 수업도 여러 학생에 의해 선택될 수 있다. 

https://fmhelp.filemaker.com/help/18/fmp/en/index.html#page/FMP_Help/many-to-many-relationships.html

 

자기 참조 관계

Self-Referencing Relationship (자기 참조 관계)는 한 테이블 안에서의 관계를 나타낼 때 사용한다. (한 column에서 같은 테이블의 다른 column 참조한다던가) 

https://blog.devart.com/types-of-relationships-in-sql-server-database.html

예를 들어, Staff테이블에는 회사의 사원과 매니저의 정보가 들어있다. 하지만 매니저 또한 사원에 포함되고 있으므로 자기 참조의 관계가 된다. 


DB 정규화

데이터베이스 정규화 (Database Nomalization)은 DB의 설계와 연관되어 있다. DB를 설계한다는 것은 데이터가 어떻게 저장될지에 대한 구조를 설계한다는 뜻과 같다. 

DB의 정규화를 위해서는 아래 3개의 요소가 중요하다. 

  • Data Redundancy (데이터 중복)
    • 데이터 중복은 실제 데이터와 동일한 복사본이거나 부분적 복사본을 뜻한다. 중복인 데이터가 있기에 복구할 때 수월할 것 같지만 다음과 같은 문제점을 지닌다.
      • 일관적인 자료 처리의 어려움
      • 저장 공간 낭비
      • 데이터의 효율성 감소

 

  • Data Integrity (데이터 무결성)
    • 데이터 무결성은 데이터의 Life-Cycle 동안 정확성과 일관성을 유지하는 것을 의미한다.
    • 입력된 데이터가 변질되지 않고 그대로 같은 상태로 사용 가능해야 한다. 

 

  • Anomaly (데이터 이상 현상) 
    • 데이터 이상 현상은 데이터에서 기대한 결과와 다른 이상 현상을 의미한다.
       
      1. Update anomaly
        • 동일한 데이터가 여러 레코드에 걸쳐 있을 때 어느 데이터를 갱신해야 하는지에 대한 논리적인 일관성의 부재로 일어난다.  

      2. Insertion anomaly 
        • 데이터를 삽입할 수 없는 경우
      3. Deletion anomaly
        • 데이터의 특정 부분을 삭제할 때 의도하지 않은 다른 부분까지 함께 지워지는 것

추가 자료 (CAP/PACELC)

 

 

 

PACELC theorem - Wikipedia

In theoretical computer science, the PACELC theorem is an extension to the CAP theorem. It states that in case of network partitioning (P) in a distributed computer system, one has to choose between availability (A) and consistency (C) (as per the CAP theo

en.wikipedia.org

저작자표시 (새창열림)

'web > DB' 카테고리의 다른 글

SQL  (0) 2022.06.13
MySQL 접속 에러 ERROR 2003 (HY000)  (0) 2022.06.10
DB/SQL 관련 명령어  (0) 2022.06.09
  • 관계형 데이터베이스
  • 관계의 종류
  • One-to-One 
  • One-to-Many 
  • Many-to-Many
  • 자기 참조 관계
  • DB 정규화
  • 추가 자료 (CAP/PACELC)
'web/DB' 카테고리의 다른 글
  • SQL
  • MySQL 접속 에러 ERROR 2003 (HY000)
  • DB/SQL 관련 명령어
danc
danc
Backend 개발자를 목표로 공부 중 입니다.

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.