CS/DB

[DB] DBMS란? / ERD 다이어그램 / 관계 데이터 모델

셰욘 2024. 11. 27. 20:28
728x90

DBMS

DBMS란?

: 모든 프로그램들이 데이터베이스를 공유할 수 있도록 관리해주는 소프트웨어

  • 응용 프로그램과 데이터베이스의 중재자
  • 응용 프로그램과 데이터 간에 상호 의존 관계 문제를 해결

DBMS 필수 기능

어떤 DB 서버 프로그램을 쓰던지 이 기능은 무조건 있다.

 

1. 정의 (DDL)

  • 데이터의 형태, 구조, 데이터를 저장하는 것에 관한 내용
  • CREATE, ALT, DROP

2. 조작 (DML)

  • 데이터를 조작(검색, 갱신, 삽입, 삭제)
  • SELECT, INSERT, DELETE, UPDATE

3. 제어 (DCL)

  • 데이터의 정확성과 안전성을 유지하는 기능
  • GRANT, REVOKE

 

스키마

  • DB의 구조에 대한 정의 및 제약 조건 등을 기술한 것
  • 서버 프로그램마다 다를 수 있다
  • 형식, 구조를 갖춰서 저장한다.

 

DB 설계 과정

요구 분석 -> 개념적 설계 -> 논리적 설계 -> 물리적 설계 -> 구현

보통 개발자들은 물리적 설계 단계부터 함 

 


ERD 다이어그램 

ERD : 현실 세계를 개체와 개체 사이의 관계를 이용해서 개념적 구조로 표현한 것

개체사각형으로, 속성동그라미로, 개체 간 관계다이아몬드로 표시한다.

 

요구사항 작성 후 요구사항에 대해 ERD를 작성하는데, 이때 요구사항은 한 문장으로 작성한다.

  • ex) 학생은 강의를 수강할 수 있다.
  • 명사는 개체(학생, 강의), 동사는 관계(수강한다)

 

개체 간 관계

관계 선택적 참여 필수적 참여
1:1
1:N
N:M

 

1:1 관계

  • 하나와 하나로만 이루어질 수 있는 관계 
  • ex) 회원 - 장바구니 (내 장바구니를 다른 회원이 이용 못함, 나는 하나의 장바구니만 이용 가능)

1:n 관계

  • ex) 회원 - 게시글 (한 명의 회원이 여러 개를 쓸 수 있음, 하나의 게시글이 여러 회원에 의해 쓰일 수 없음) 

n:m 관계

  • ex) 학생 - 수업 (한 학생은 여러 개의 수업을 들을 수 있음, 하나의 수업을 여러 학생이 들을 수 있음)

 


관계 데이터 모델

: DBMS 종류 중 하나 (계층, 네트워크, 관계)

: 현실 세계의 모든 데이터를 논리적인 릴레이션(표) 구조로 구성한 것

 

관련 용어

  • 릴레이션 : 정보 저장의 형태. 2차원 구조의 테이블
  • 속성 : 테이블의 각 열
  • 튜플 (레코드) : 테이블의 한 행을 구성하는 속성들의 집합
  • 도메인 : 속성이 취할 수 있는 값들의 집합
  • 기수 (Cardinality) : 튜플의 수 = 행의 수
  • 차수 (Degree) : 속성의 수
idx name age
1 kim 20
2 park 30

 

ex)

  • 릴레이션 = 표 전체
  • 속성 = idx, name, age
  • 튜플 = (1, kim, 20) 한 줄
  • 도메인 = kim, park
  • 기수 : 2
  • 차수 : 3

 

릴레이션 특징

: 데이터들을 저장할 때 제약 조건

 

1. 특정 릴레이션은 오직 하나의 레코드 타입만 저장 

  • 하나의 표에는 무조건 관련된 것만 저장

 

2. 하나의 속성 안에 있는 값들은 모두 같은 유형으로 저장해야된다

  • ex) 20, 30, 마흔 -> 안됨

 

3. 속성들의 순서는 중요하지 않다.

  • ex) idx, name, age / name, age, idx

 

4. 각 속성의 이름은 한 릴레이션 내에서만 고유하다.

  • 한 릴레이션에 동일한 이름의 애트리뷰트가 두 개 이상 존재할 수 없다.
  • 다른 릴레이션에서는 존재가 가능하다.
  • ex) board - idx, student - idx 다른 표에서 똑같은 속성 만들어도 됨

 

5. 릴레이션에서 동일한 튜플이 두 개 이상 존재하지 않는다.

  • ex) 1, kim, 20 => 두 개 이상 존재할 수 없음

 

6. 한 튜플의 각 속성은 원자 값(제일 작은 값)을 가진다

  • 값에 리스트나 집합 등은 허용되지 않는다.
  • ex) 취미 - 영화, 책 => 이러면 안 됨. 무조건 하나가 되어야 한다.

 

 

키의 종류

키 : 다른 릴레이션(표)들과 관계를 맺어주는 것

 

1. 슈퍼키

  • 유일성은 갖지만, 최소성은 만족시키지 못하는 속성의 집합
  • 모든 행을 구분할 수 있는 속성
  • ex) name이라는 속성만 가지고 모든 행을 구분할 수 없음, idx는 모든 행 구분하기 때문에 유일성을 가진다.

2. 후보키

  • 유일성과 최소성을 모두 갖는 속성의 집합
  • 유일하면서 최소한의 속성 개수

3. 기본키 (PK)

  • 후보키 중 하나를 정한 것
  • 개체 식별자. 튜플을 유일하게 식별할 수 있는 속성

4. 대체키

  • 후보키에서 기본키를 뺀 나머지. 기본키를 제외한 후보키

5. 외래키

  • 테이블과 테이블 사이에 관계를 맺어줄 때 기본키를 참조하는 값

 

데이터 무결성 제약 조건

개체 무결성

  • 기본 릴레이션의 기본키를 구성하는 어떤 속성도 NULL과 중복을 허용하지 않는다.
  • 기본키가 없이 데이터를 저장할 수 없다.
  • 기본키가 중복이 되면 안 된다.

참조 무결성

  • 외래키 값은 null이거나, 참조하는 릴레이션에 있는 기본키이다.

도메인 무결성

  • 특정 속성의 값은 그 속성에 정의된대로의 값만 허용한다.

 

 

ERD -> 릴레이션 변환 과정 규칙 (사상 규)

  • 개체는 하나의 릴레이션으로 변환한다.
  • N : M 관계는 하나의 릴레이션으로 변환한다.
  • 1 : N 관계는 외래키 속성으로 표현한다.
    • N 측에 있는 릴레이션에 외래키가 있어야 한다.
  • 1 : 1 관계는 외래키 속성으로 표현한다.
  • 다중 값 속성은 다른 릴레이션으로 변환한다.

 

user_has_product 

=> user와 product가 N:M 관계이기 때문에 가운데 관계에 대한 릴레이션이 생성됨

728x90