비트를 쪼개는 개발자

allen321@naver.com

DataBase

DataBase 란 ? (SQL 및 ERD에 관하여)

MozarTnT 2024. 2. 22. 16:56
728x90
반응형

DataBase 란 전자적으로 Data(정보)저장하고 공유사용을 위해 체계적으로 데이터를 저장하는 방식이다.

 

 

컴퓨터에서 데이터를 저장할때는 메모리(Ram) 혹은 디스크(SSD,HDD)에 보관하는데

 

컴퓨터를 종료할 시 (전원 공급이 차단되면) 메모리에 저장 되었던 데이터들은 모두 사라진다.

 

따라서 데이터베이스에서는 일반적으로 컴퓨터가 종료되어도 데이터를 저장 할 수 있는 디스크에 데이터를 저장한다.

 

 

DataBase와 이를 제어하는 데이터베이스 관리 시스템 (DBMS)로 구성하는데

 

DataBase 자체는 데이터를 저장하는 창고 역할만 해주기 때문에 보통 DataBase를 말할때에는 이를 컨트롤 해주는

데이터베이스 관리 시스템 (DBMS) 까지 통합시켜 이야기 하는 경우가 많다.

 

 

DBMS의 유형에는 

 

- 관계 형 (열과 행) [RDBMS]

 

- 키-값 (Key - Value) 형

 

- 객체 지향형

 

- 문서형

 

- 그래프형

 

- 컬럼 (패밀리) 형

 

- 클라우드 형

 

등 여러가지의 DBMS가 있는데 데이터의 사용 방식에 따라 적합한 데이터 베이스의 유형은 다르다.

 

 

 

가장 많이 사용되는 DBMS는 관계형 DBMS인 RDBMS 이며 

 

RDBMS는 테이블이라는 엑셀에서 사용하는 표의 모양과 비슷한 단위를 사용하여 데이터를 저장한다.

 

가로줄인 '행'과 세로 줄인 '열'을 이용하여 테이블을 구성하는데 이러한 구조가 가장 기초적인 RDBMS의 구조라고 볼 수 있다.

 

 

 

 

이 RDBMS를 다루기 위해서 사용하는 언어는 SQL(Structured Query Language) 이라는 언어가 있는데 

 

이 언어는 수학적인 대수와 논리에 기초를 둔 언어이면서 국제 표준을 정해서 발표할 만큼 공통적으로 많이 쓰이는 언어이다.

 

한마디로 데이터베이스에 특화된 수학적인 언어라고 보면 된다.

 

DBMS에서 SQL을 사용하는 대표 제품들로는 

 

- ORACLE

 

- MySQL

 

- SQL Server 

 

- Maria DB

 

등이 있는데, 오라클 측에서 MySQL을 인수하기는 했지만 아직 무료버전이 지원하는 범위가 넓고

상업적인 상용화가 용이하여 MySQL이 많은 이용자가 접근하기 쉬운편이다.

 

 

여기까지가 데이터 베이스가 무엇인지 짧게 정리해본 요약본이고,

 

이제 데이터 베이스를 사용해 보려고 할때 알아야 할 기초적인 사항이다.

 

 

먼저 DB를 개발하기 전 먼저 내가 받아올 수 많은 데이터들을 구조화 하거나 정리하는 것이 매우 중요하다.

 

DB를 짜다보면 데이터 양이 처음 생각한것 보다 많거나 정리가 안되는 상황이 빈번하게 발생하는데 이를 정리하려면 

 

우선 ERD가 무엇인지 알아야 한다.

 

 

 

ERD (Entity Relationship Diagram) 란 테이블간의 관계를 도식화 해놓은 다이어그램인데,

 

프로젝트를 진행할 때 이 ERD를 보면서 DB의 전체적인 구조를 용이하게 파악하기 위해 사용한다.

 

따라서 ERD로 데이터 베이스의 구조를 미리 정리해놓으면

 

개발중에 참고하기도 좋고 수정 사항이나 변경 사항이 발생 해도 대처가 용이하다.

 

 

 

ERD는 사각형, 다이아몬드, 연결선, 화살표(삼지창)와 기호 집합들을 사용하여 테이블들 간의 상호 연결성과

관계를 정리하는데 여기서 일반적으로 사용되는 키워드는

 

 

- Entity (객체)

 

- Relationship (Entity 간의 관계)

 

- Attribute (속성)

 

 

등이 있다.

 

 

 

 

 

Entity란 말 그대로 객체인데, 데이터 베이스를 구상할때 우리가 생각했던 하나의 테이블이 이 Entity라고 볼 수 있다.

 

예를 들어 식당이라는 ERD에서는 '종업원' 이라는 Entity와 '사장' 이라는 Entity가 따로 존재한다고 볼 수 있다.

 

모든 Entity에는 각각의 식별자(UID)가 필요하며 식별자는 Entity가 꼭 지녀야 하는 필수 요소이다.

 

 

여기서 모든 Entity에는 Attribute(속성) 이 필요한데,

 

Attribute는 Entity를 구성하고 있는 Entity 내부의 구성 요소들이다.

 

종업원이라는 Entity에는 

 

나이, 성별,  월급, 근무시간, 경력 과 같은 Attribute가 들어갈 수 있으며

 

Attribute는 다른 Attribute들과 구분되도록 고유한 값들로 지정해 주어야 하며 Entity와는 다른 명칭을 써야한다.

 

더불어 Attribute는 단수형으로 기입해야 하며 해당 데이터 타입을 꼭 같이 명시해 주어야 한다.

 

 

 

마지막으로 RelationShip은 Entity들간의 관계를 의미한다.

 

두 Entity 사이에 선으로 관계를 표기하게 되며

 

두 Entity 사이의 선이 실선 일 경우에는 두 관계는 필수적인 관계가 된다.

 

반대로 두 Entity 사이의 선이 점선 일 경우에는 두 관계는 선택적인 관계가 된다.

 

 

 

또한 이 Entity간에 보이는 삼지창같은 모양이 

 

Entity간의 관계 형태 인데 이 관계 형태의 모양에 따라 

 

Entity간의 관계가 1 : 1 인지, 1 : N인지, 혹은 N : M인지를 나타낼 수 있다.

 

앞서 설명한 기호 이외에도 Relationship을 표현하기 위한 여러가지 기호가 있으니

 

참고하면 ERD를 작성할 때 유용하다.

 

 

 

 

 

마지막으로 정리하자면

 

우리는 수 많은 불특정한 정보들을 저장하고 이를 공유하거나 사용하기 위해 효율적으로 저장하는 방식을 Database라고 부르며 이 Database 를 효과적으로 정리할 수 있는 유형에 따라 여러 DBMS중 하나를 취사 선택 한다.

 

그리고 Database를 설계하면서 ERD를 활용하여 내가 사용할 테이블(객체)들의 목록과 지정해 주어야 할 속성(Attribute),

테이블들 간의 관계(Relationship)를 미리 설계한다면 보다 효율적으로 Database 를 사용할 수 있다 !

 

 

 

 

 

 

 

 

 

사진 출처  : https://velog.io/@tjdtn0219/DB-SQL-vs-NoSQL-%EA%B4%80%EA%B3%84%ED%98%95-vs-%EB%B9%84%EA%B4%80%EA%B3%84%ED%98%95-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4

 

[데이터베이스] SQL vs NoSQL (관계형 vs 비관계형 데이터베이스)

Spring은 주로 MySQL을, Node.js에서는 주로 MongoDB를 사용하지만, DB의 설정은 단순히 프레임워크에 따라 결정하는 것이 아니다.SQL(관계형 데이터베이스)와 NoSQL(비관계형 데이터베이스)의 차이를 알고

velog.io

 

https://velog.io/@orangehour/NoSQL-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%86%8C%EA%B0%9C-%EB%B0%8F-%ED%8A%B9%EC%A7%95

728x90
반응형