티스토리 뷰

개발공부/🧺 DBMS

[DB] 데이터베이스란 무엇인가?

2022. 9. 16. 15:29

1️⃣  데이터베이스 소개

 

 데이터는 현실 세계에서 수집된 단순한 사실과 값들을 모아 놓은 것

 정보는 데이터를 특정 목적에 의해 해석하거나 가공한 형태

 

이미지출처 : 엘리스 데이터베이스 기초 - 1장 데이터베이스 개요 강의자료

 

 

 

 

데이터베이스

 

:  데이터들의 집합

 

-  한 조직 안에서 여러 사용자와 응용 프로그램이 공동으로 사용하는 데이터들을 통합하여 저장하고 운영하는 데이터

 

 

 

 

데이터베이스의 필요성

 

예전에는 파일 처리 시스템을 사용하여 데이터를 공유

 

→  파일처리 시스템의 한계

-  데이터의 구조가 바뀌면 응용 프로그램의 구조도 바뀌어야 한다. (데이터 종속의 문제)

-  응용 프로그램 별로 데이터를 생성할 수 있기 때문에 데이터가 중복될 수 있다. (데이터 중복의 문제)

-  데이터의 무결성을 지킬 수 없다.

 

 

💡 용어해설

무결성  :  데이터가 정확하고 일관된 형태로 유지되는 것

→  데이터의 무결성을 보장한다는 것은 데이터가 안정적으로 보관된다는 의미

 

 

 

 

 

데이터베이스의 특징

 

 실시간 접근성  :  사용자가 원할 때 언제든지 접근 가능해야 한다.

 지속적인 변화  :  데이터의 삽입, 삭제, 갱신을 통해 최신 데이터를 유지해야 한다.

 동시 공유  :  여러 사용자가 동시에 이용할 수 있어야 한다.

 내용에 대한 참조  :  데이터가 저장된 물리적 위치가 아닌 값을 가지고 검색할 수 있어야 한다.

 

이미지출처 : 엘리스 데이터베이스 기초 - 1장 데이터베이스 개요 강의자료

 

 

 

 

 

2️⃣  데이터베이스 종류

 

 RDB(Relational Database)는 관계형 모델을 기반으로 SQL을 이용해 데이터를 관리한다.

 NoSQL(Not only SQL)은 데이터 간의 관계를 정의하지 않고 RDB보다 유연한 모델을 이용한다.

 

이미지출처 : 엘리스 데이터베이스 기초 - 1장 데이터베이스 개요 강의자료

 

 

 

 

 

 

관계형 데이터베이스 (RDBMS)

 

-  데이터를 행과 열을 가지는 테이블로 표현한다.

-  테이블 간의 관계를 이용해 데이터를 효과적으로 관리하여 데이터의 무결성을 보장한다.

-  정의된 테이블(스키마)에 맞게 데이터가 삽입되므로 데이터의 안정성을 보장한다.

-  데이터의 구조가 일관적인 경우에 주로 사용한다.

 

→  관계를 기반으로 데이터의 중복이 없이 효과적으로 데이터를 관리

 

 

RDBMS의 종류

MySQL, PostgreSQL, MariaDB, Oracle, MSSQL, ...

 

이미지출처 : 엘리스 데이터베이스 기초 - 1장 데이터베이스 개요 강의자료

 

 

 

 

 

 

비관계형 데이터베이스 (NoSQL)

 

-  데이터를 저장할 수 있는 유형의 제한이 없다.

-  새로운 유형의 데이터를 추가하기 용이하다.

-  데이터의 구조가 일관적이지 않고 자주 변경되는 경우에 적합하다.

-  대용량의 데이터(이미지, 음성 등)를 더 빠르게 처리할 수 있다.

 

→  안정성이 조금 떨어지더라도 유연한 데이터 처리 및 처리속도가 중요한 경우 NoSQL을 활용

ex)  온도, 습도, 바람 등의 데이터를 실시간으로 가져와 날씨를 예측하는 시스템이 있다면..

 

 

 

NoSQL의 종류

MongoDB, Redis, Apache Cassandra, ...

 

이미지출처 : 엘리스 데이터베이스 기초 - 1장 데이터베이스 개요 강의자료

 

 

 

 

 

 

RDB  vs  NoSQL

 

RDB NoSQL
행과 열로 구성된 테이블로 데이터를 표현 데이터 표현 방식이 고정적이지 않음
관계 모델을 기반으로 데이터를 관리 일반적으로 대용량의 데이터를 RDB보다 빠르게 처리할 수 있음
데이터의 무결성과 안정성이 중요한 경우 사용 데이터의 구조가 일관적이지 않은 빅데이터를 처리하는 경우 사용
MySQL, PostgreSQL, MariaDB 등 MongoDB, Redis, Apache Cassandra 등

 

 

→  언제 어떤 DB를 사용할 것인가?

 

하나의 프로젝트에서 꼭 하나의 DB만 사용하는 것은 아니다.

RDB + NoSQL를 필요에 따라 적절하게 사용할 수 있다.

 

ex)

회원정보는 안정성이 중요하니 RDB로 관리

사이트 접속기록은 데이터베이스에 저장한다고 했을 때 데이터양이 무수히 많아질 수 있기 때문에 NoSQL로 관리

 

 

 

 

 

 

 

 3️⃣  관계형 데이터베이스 만들기

 

 

관계형 데이터베이스 구성요소

 

-  테이블은 행과 열로 구성

-  속성은 데이터의 특성을 나타내는 가장 작은 논리적 단위를 의미

-  튜플은 속성이 모여 구성된 각각의 행을 의미

-  도메인은 속성이 가질 수 있는 값의 집합

 

이미지출처 : 엘리스 데이터베이스 기초 - 1장 데이터베이스 개요 강의자료

 

 

 

 

 

관계형 데이터베이스에서의 '관계'

 

이미지출처 : 엘리스 데이터베이스 기초 - 1장 데이터베이스 개요 강의자료

 

관계가 없다면 주문번호를 ID, 이름, 주소와 함께 관리해야 한다.

 

→  그러면 주문번호를 저장하기 위해 이름과 주소 데이터를 중복해서 저장해야 한다.

→  관계가 있다면 하나의 속성으로 테이블을 연결해서 데이터를 효과적으로 관리할 수 있다.

 

 

 

 

 

테이블 정의하기 (MySQL 사용)

CREATE TABLE 테이블명(속성1 데이터타입1, 속성2 데이터타입2, ...);

 

정의한 테이블 확인

SHOW TABLES;

 

테이블의 구조 확인

DESC customer;

 

💡 SQL 작성 규칙

-  SQL 문법은 대문자로 작성하는 것을 권장한다.

-  테이블명, 속성명은 소문자로 작성하는 것을 권장한다.

-  이름은 항상 의미가 잘 드러나도록 작성한다.

-  이름에 여러 단어를 혼합하는 경우 "_"를 이용해 구분한다.

-  "--"을 이용해 주석을 나타낼 수 있다.

-  명령어 끝에는 세미콜론(;)을 작성한다.

→  이외에도 여러 규칙이 있을 수 있으며, DBMS마다 필수로 지켜야하는 규칙이 차이가 있을 수 있다.

 

 

 

 

 

데이터 삽입하기

INSERT INTO 테이블명(속성1, 속성2, ...) VALUES(속성값1, 속성값2, ...);

 

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

-  모든 속성을 테이블의 정의한 순서대로 입력하는 경우 속성목록은 생략 가능하다.

 

→  속성값을 넣지 않는 경우 default 값인 NULL이 삽입된다.

 

 

 

 

데이터 조회하기

SELECT 속성1, 속성2, ... FROM 테이블명;

 

-  출력하고 싶은 속성을 조절 가능하다.

-  "*"를 이용해 모든 속성을 출력 가능하다.

 

 

 

 

 

 

 

4️⃣  데이터베이스 정의어

 

SQL (Structured Query Language)이란 관계형 데이터베이스를 활용하기 위해 사용하는 표준 언어이다.

 

1)  데이터 정의어(DDL, Data Definition Language)

:  테이블과 같은 데이터 구조 정의

 

2)  데이터 조작어(DML , Data Manipulation Language)

:  데이터 조회 및 검색

 

3)  데이터 제어어(DCL , Data Control Language)

:  데이터베이스에 접근하는 권한 관리

 

 

 

 

 

테이블 정의하기

CREATE TABLE 테이블명(속성1 데이터타입1 제약조건1, 속성2 데이터타입2 제약조건2, ...);
CREATE TABLE customer(
	id	VARCHAR(10) NOT NULL,
	name	VARCHAR(10) NOT NULL,
	address	VARCHAR(30) NULL
);

 

💡  용어해설

NULL  :   비어있는 값  ↔  NOT NULL

 

💡  데이터타입

-  데이터 타입은 문자, 숫자, 날짜 등 여러가지가 있다.

-  제공되는 데이터 타입은 DBMS마다 차이가 있을 수 있다.

-  MySQL 데이터 타입 알아보기  :  https://dev.mysql.com/doc/refman/8.0/en/data-types.html

 

자료형 의미
VARCHAR(n) n Bytes 크기의 가변 길이 문자열 데이터
INT 정수형 숫자 데이터(4Bytes)
FLOAT 4Bytes 크기의 부동 소수점 데이터
DATETIME 날짜와 시간 형태의 기간 데이터 (YYYY-MM-DD HH:MM:SS)
... ...

 

 

 

 

테이블 수정하기

-- 컬럼 추가
ALTER TABLE 테이블명 ADD COLUMN 컬럼명 데이터타입 제약조건;

-- 컬럼 수정
ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 데이터타입 제약조건;

-- 컬럼 이름 변경
ALTER TABLE 테이블명 CHANGE COLUMN 기존컬럼명 새로운컬럼명 데이터타입 제약조건;

-- 컬럼 삭제
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

-- 테이블 이름 변경
ALTER TABLE 기존테이블명 RENAME 새로운테이블명;

 

 

 

테이블 삭제하기

DROP TABLE 테이블명;

 

 

 

 


 이 글은 엘리스의 AI트랙 5기 강의를 들으며 정리한 내용입니다.

반응형

'개발공부 > 🧺 DBMS' 카테고리의 다른 글

[DB] 데이터 모델링  (0) 2022.09.19
[DB] 데이터베이스 구성하기  (0) 2022.09.17
프로필사진
개발자 삐롱히

프론트엔드 개발자 삐롱히의 개발 & 공부 기록 블로그