Database 설계 - 기초

2023. 8. 29. 16:53· 공부/Database
반응형

 

Database(DB) : 데이터의 저장소

  • 데이터베이스는 무조건 하드디스크에 저장될 수 밖에 없음

DBMS(Database Management System) : 데이터베이스 관리 시스템

관계형DB : 데이터의 종속성을 관계로 표현하는 것이 특징

관계형 DB = 2차원 DB → 테이블로 이루어짐

  • Column(열) = 필드 = 속성 : 데이터의 제목(분류) , 유일한 이름을 가진다
  • Row(행) = 튜플 = 레코드 : 관계된 데이터들의 묶음
  • DB의 모델링에 따라서 사용하는 DBMS도 바뀐다. 관계형DB는 RDBMS를 사용하여 관리함

datetime을 사용하면 YYYY-MM-DD HH:mm:ss 형태로 저장되고 데이터 값을 입력해 주어야 한다.

timestamp는 1970/1/1의 기준으로 몇 초가 지났는지 기록됨

년도 표시에서 RR은 0~49까지는 현 세기를 나타내고 50~99까지는 전 세기의 년도를 나타냄

사용하는 이유는 년도를 표시할 때 년도에서 YY 두 자리만 사용할 때 YY/MM/DD 라는 형태라고 치고 98년도를 치면 DB에서는 2098년인지 1998년인지 인지할수없기 때문에

→ 이럴때 RR/MM/DD 형식에 97년도를 입력하게되면 DB내부에서는 1997년으로 인식됨

 

Primary key : NOT NULL, UNIQUE(고유성)

  • UNIQUE : 학번이나 휴대폰 번호처럼 고유해야한다(중복이 안됨), 유니크 인덱스가 만들어짐 
  • PK는 테이블 당 하나만 가질 수 있다.
  • 관계형 DB는 이론 상 모든 테이블에 하나의 기본 키를 가져야 한다. 

 

파일 시스템 : 디스크 파티션을 관리하는 하나의 체계

  • 단점 : 응용 프로그램 별로 파일을 유지하여 같은 데이터의 중복성이 발생하여 디스크의 공간을 낭비할 수 있음

DBMS는 DB에 데이터를 통합하여 관리하기에 중복 문제를 쉽게 해결할 수 있다.

  • 만약 DB에서 중복이 발생하면 발생하는 치명적인 단점은 디스크에 있는 중복이 정보를 보여줄 때 메모리에 올려서 확인하기 때문에 결국에는 메모리의 공간 낭비로도 이어짐
    • 디스크의 공간 낭비에서 메모리의 공간 낭비로도 이어짐

하나의 종속성을 가지고 있는 컬럼이 또 종속성을 가지고 있으면 잘라야됨 - 제3정규화

 

학생 테이블

학번 이름 학과 번호 학과 이름
001 xxx 1 컴퓨터정보
002 xxa 2 컴퓨터공학
003 aan 1 컴퓨터정보

                                                                                               ↓

 

학과 테이블

학과 번호 학과 이름
1 컴퓨터정보
2 컴퓨터공학
3 드론학과

↓

 

학생 테이블에서 중속성이 있는 컬럼 제거

학번 이름 학과 번호
001 xxx 1
002 xxa 2
003 aan 1

 

학생 테이블에 학과 번호와 학과 이름은 서로 종속적인 관계이다, 이 부분에서 중복성 이슈가 발생함

→ 학과 번호만 남기고 학과 이름은 학과 테이블을 따로 만들어 조인을 시켜주어 중복성을 줄였다

 

 

 

단 , 지나친 정규화는 많은 조인을 만들어 성능 상 단점이 발생함 → 성능을 위해 반정규화 하는 경우도 있음

반정규화 : 하나 이상의 테이블에 데이터를 중복해 배치하는 최적화 기법

  • 시스템의 성능 향상 또는 개발자의 편의성을 위해 의도적으로 정규화 원칙을 위배하는 행위
  • 하지만 반정규화 동작 때문에 데이터 일관성 유지가 어려울 수 있다

데이터베이스의 처리속도에 가장 큰 영향을 미치는 것은 디스크 I/O 동작이다 하지만 데이터를 저장하는 하드디스크는 CPU에 비해 현저히 느리기 때문에 데이터베이스는 캐시 기술을 이용해 메모리에 올려서 처리하는 구조를 가지고 있음.

 

Cache : 가까운 미래나 다음 작업에 필요한 데이터를 미리 가져다 놓음

  •  Cache는 CPU안의 레지스터의 속도에 범접함 → 데이터 처리속도가 현저히 빨라짐 

 

반응형
'공부/Database' 카테고리의 다른 글
  • Oracle Database의 설계 및 디스크와 메모리와의 관계
Future0_
Future0_
rm -rf /
Future0_
Luna Developer Blog
Future0_
전체
오늘
어제
  • 분류 전체보기 (112)
    • 프로그래밍 (4)
      • 알고리즘 (4)
    • 보안 (14)
      • Dreamhack (4)
      • Hackthebox (1)
      • Webhacking (9)
    • 프로젝트 (4)
    • 공부 (80)
      • Database (2)
      • Python (11)
      • System (4)
      • Java (13)
      • JSP (13)
      • Spring (11)
      • Kotlin (16)
      • 자료구조 (10)
      • 기계학습 (0)
    • Docker (4)
    • Github (2)
    • Tip (1)
    • 잡담 (2)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • SpringBoot
  • ViewModel
  • jsp
  • React
  • Python
  • Java
  • api 통신
  • 상속
  • spring
  • 프로그래밍
  • Database
  • 보안
  • 컴퓨터
  • native app
  • 자료구조
  • dreamhack
  • 1.9.22
  • android studio 삭제
  • Kotlin
  • shared preference
  • cs
  • 키 해시
  • 알고리즘
  • 코틀린기본문법
  • Android Studio
  • Computer science
  • docker
  • webhacking
  • 자바빈즈
  • 디버깅키해시

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
Future0_
Database 설계 - 기초
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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