1. 데이터베이스 개념

데이터베이스(DB, DataBase)는 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음

DBMS(Database Management System): 데이터베이스를 관리하는 소프트웨어

- 종류: MySQL, Oracle, Microsoft SQL Server, PostgreSQL

데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어(query language)를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있습니다. 또한, 데이터베이스는 실시간 접근과 동시 공유가 가능합니다.

출처: https://www.techopedia.com/kr/definition/database-management-systems-dbms

위 그림과 같은 구조를 기반으로 데이터를 주고 받습니다.

Ex) MySQL(DBMS)가 있고 그 위에 응용 프로그램에 속하는 Node.js나 php에서 해당 데이터베이스 안에 있는 데이터를 그집어내 해당 데이터 관련 로직을 구축할 수 있습니다.

2. 엔터티(Entity)

엔터티는 현실 세계에서 독립적으로 존재하며 고유하게 식별 가능한 객체나 개체를 의미합니다. 예를 들어, 학생, 책, 주문 등이 엔터티가 될 수 있습니다.

  • 강한 Entity: 고유하게 식별할 수 있는 기본 키를 갖고 있으며 독립적으로 존재할 수 있는 entity
    Ex) 학생 entity는 학번을 기본 키로 가지며 다른 entity에 의존하지 않고 독립적으로 존재할 수 있습니다.
  • 약한 Entity:  고유하게 식별할 수 있는 기본 키(Primary key)가 없고 다른 entity에 의존하여 식별하는 entity
    Ex1) 주문 항목 entity는 주문 entity에 의존하여 식별됩니다. 주문번호와 항목번호를 합쳐서 고유하게 식별될 수 있습니다.
    Ex2) 직원의 자녀 entity는 직원 entity에 의존하여 식별됩니다. 직원ID와 자녀의 이름을 합쳐서 고유하게 식별될 수 있습니다.

2. 속성(Attribute)

엔터티는 속성(Attribute)를 가집니다. 속성 Entity의 특성이나 성질을 나타냅니다.

Ex) 학생이라는 Entity가 있을 때, 이름, 학번, 생년월일, 전공 등을 속성으로 가질 수 있습니다.

3. 도메인(Domain)

Domain은 속성이 가질 수 있는 값의 집합을 의미합니다.

Ex) 성별 속성이 있을 때, 이 속성이 가질 수 있는 값은 {남, 여} 집합이 됩니다.

4. 릴레이션(Relation)

Relation은 데이터베이스에서 정보를 구분하여 저장하는 기본 단위입니다. 쉽게 말해, 데이터를 표 형태로 표현한 것입니다. Entity에 관한 데이터를 데이터베이스는 relation 하나에 담아서 관리합니다.

Ex) 학생이라는 entity가 데이터베이스에서 관리할 때 아래와 같이 relation(표 형태)로 관리됩니다.

학번 이름 나이 전공
1 홍길동 20 컴퓨터공학과
2 임꺽정 21 산업경영공학과

관계형 데이터베이스에서는 'table', NoSQL 데이터베이스에서는 'collection'이라고 합니다.

  • 관계형 데이터베이스: 데이터를 테이블 형태로 저장하고 관리
    - 구조: record-table-database
  • NoSQL 데이터베이스: 비관계형 데이터베이스
    - 구조: document-collection-database

https://code.tutsplus.com/relational-databases-for-dummies--net-30244t

위 그림과 같이 record가 쌓여서 table이 되고 table이 쌓여서 database가 됩니다.

5. Field & Record

6. Field Type

필드는 타입을 갖습니다.

Ex) 이름 -> 문자열, 전화번호 -> 숫자

 

숫자 타입

타입 용량(byte) 최솟값(부호O) 최댓값(부호O) 최솟값(부호X) 최댓값(부호X)
TINYINT 1(=8bit) -128 127 0 255
SMALLINT 2 -32768 32767 0 65535
MEDIUMINT 3 -8388608 8388607 0 16777215
INT 4 -2147483648 2147483647 0 4294967295
BIGINT 8 -263 263-1 0 264-1

부호가 있는 정수: 양수 또는 음수

부호가 없는 정수: 0 또는 양수

 

날짜 타입

타입 용량(byte) 지원 범위
DATE 3 1000-01-01 ~ 9999-12-31
DATETIME 8 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
TIMESTAMP 4 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07

 

문자 타입

타입 특징 길이
CHAR 고정 길이 문자열(짧든 길든 선언한 길이 값으로 고정해서 저장) 0 ~ 255
VARCHAR 가변 길이 문자열(입력된 데이터에 따라 용량을 가변시켜 저장) 0 ~ 6535
TEXT 큰 문자열 저장(ex. 게시판의 본문 저장)  
BLOB 이미지, 동영상 등 큰 데이터 저장  
ENUM 미리 정의된 값 중 하나만 저장 가능 최대 65535개 요소 넣을 수 있음
SET 미리 정의된 값 중 여러 개 저장 가능 최대 64개 요소 넣을 수 있음

 

7. Relationship(관계)

데이터베이스에 있는 여러 개의 테이블은 서로 관계가 정의되어 있습니다. 관계를 화살표로 표현하는데 이를 관계화살표라고 합니다.

하나의 A는 하나의 B로 구성되어 있다.
하나의 A는 하나 이상의 B로 구성되어 있다.
하나의 A는 하나 이하의 B로 구성되어 있다.
하나의 A는 0 또는 하나 이상의 B로 구성되어 있다.

 

1:1 관계

유저 - 유저 이메일

 

1:N 관계

유저(1)-장바구니 내 상품(N)

 

N:M 관계

학생(N)-강의(M)

 

8. 키(Key)

<학생 테이블>

학번 이름 주민등록번호 학과 강의
2019000000 A 1234 컴퓨터공학과 웹프로그래밍
2019100001 B 1523 컴퓨터공학과 네트워크 기초
2019200002 C 4567 컴퓨터공학과 운영체제
2019300003 D 2647 컴퓨터공학과 웹프로그래밍
2019400004 E 1756 산업경영공학과 운영체제
2019500005 F 9842 산업경영공학과 웹프로그래밍
2019600006 G 3695 산업경영공학과 기술경영

 

<강의 테이블>

강의명 교수 교수ID
웹프로그래밍 김OO 1
네트워크 기초 박OO 2
운영체제 이OO 3
기술경영 김OO 1

 

기본키(Primary Key, PK)

: 유일성과 최소성을 가지며 각 행(record)을 유일하게 식별할 수 있는 칼럼(또는 칼럼 조합)

- 중복된 값을 가질 수 없습니다.

- NULL값을 허용하지 않습니다.

- 유일성: 어떤 키의 값이 데이터베이스 내의 모든 행에 대해 유일해야 한다는 원칙

- 최소성: 키를 구성하는 데 필요한 속성의 수를 최소화해야 한다는 원칙

Ex) 학생 테이블 -> 학번 or 주민등록번호 / 강의 테이블 -> 강의명

 

자연키 : 테이블의 데이터가 자연스럽게 가지고 있는 키를 이용해 만들어진 키(데이터 자체에서 파생되는 키)

Ex) 학생 테이블 -> 학번, 주민등록번호 / 강의 테이블 -> 강의명

 

인조키: 인위적으로 생성한 키

Ex) 강의 테이블 -> 강의ID를 부여하는 경우, 강의ID가 인조키

 

외래키(Foreign Key, FK)

: 다른 테이블의 기본키를 참조하는 값

- 두 테이블 간의 관계를 설정하는데 사용

Ex) 학생 테이블(강의) - 강의 테이블(강의명) -> '학생 테이블'의 '강의'는 외래키이며 '강의 테이블'의 기본키를 참조

 

후보키(Candidate Key)

: 테이블에서 기본키로 사용될 수 있는 후보가 되는 키

- 유일성과 최소성을 동시에 만족합니다.

Ex) 학생 테이블 - 학번, 주민등록번호

 

대체키(Alternate Key)

: 기본키로 사용될 수 있지만 실제로는 사용되지 않는 키(후보키 - 기본키)

Ex) 학생 테이블 - 기본키로 학번을 사용하면 주민등록번호는 대체키

 

슈퍼키(Super Key)

: 테이블 내에서 각 행을 유일하게 식별할 수 있는 하나 또는 하나 이상의 칼럼의 조합

- 유일성만 만족하면 됩니다.

- 최소성은 보장하지 않을 수 있습니다.

Ex) 학생 테이블 - {학번, 주민등록번호}

728x90

+ Recent posts