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 관계이기 때문에 가운데 관계에 대한 릴레이션이 생성됨
'CS > DB' 카테고리의 다른 글
[DB] SQL 문법 (1) | 2024.11.29 |
---|---|
[DB] 워드프레스 서버 - DB 서버 연동 실습 (1) | 2024.11.28 |
[DB] SQL 연습 (윈도우 MySQL Workbench) (0) | 2024.11.28 |
[DB] 정규화란? / 정규화 과정 (0) | 2024.11.27 |
[DB] 데이터베이스란? / DB 서버 실습 (윈도우 클라이언트 - 리눅스 서버 연동) (0) | 2024.11.27 |