데이터베이스 (Database) 란?
데이터베이스는 하나 이상의 관련성 있는 데이터를 모아 구조화하여 저장한 집합체입니다. 효율적인 데이터 관리, 검색, 갱신 및 삭제를 위해 사용되며, 오늘날 대부분의 IT 시스템에서 핵심적인 역할을 수행합니다. 데이터베이스를 통해 여러 사용자가 데이터를 공유하고 동시에 접근할 수 있습니다.
데이터베이스의 종류 및 모델
데이터베이스는 저장 방식과 구조에 따라 여러 종류로 나눌 수 있습니다.
- 관계형 데이터베이스 (RDB, Relational Database): 데이터를 테이블(Table) 형태로 저장하며, 테이블 간의 관계를 키(Key)를 사용하여 정의합니다. 데이터의 일관성과 무결성을 보장하는 데 강점을 가집니다. (예: MySQL, PostgreSQL, Oracle, SQL Server)
- NoSQL 데이터베이스 (Not Only SQL Database): 관계형 데이터베이스 형태가 아닌 다른 방식으로 데이터를 저장합니다. 대규모 분산 데이터 처리나 유연한 데이터 구조에 유리하며, 다양한 형태가 존재합니다. (예: MongoDB, Cassandra, Redis)
데이터 모델:
데이터 모델은 데이터의 구조와 데이터 간의 관계를 추상적으로 표현한 것입니다.
- 계층형 모델 (Hierarchical Model): 데이터를 트리 형태로 구성하며, 부모-자식 관계를 가집니다.
- 네트워크 모델 (Network Model): 계층형 모델보다 유연한 구조로, 여러 부모를 가질 수 있습니다.
- 관계형 모델 (Relational Model): 데이터를 2차원 테이블 형태로 표현하며, 가장 널리 사용되는 모델입니다.
- 객체지향 모델 (Object-Oriented Model): 객체 지향 프로그래밍 개념을 데이터 모델에 적용한 것입니다.
- 객체-관계형 모델 (Object-Relational Model): 관계형 모델에 객체 지향 개념을 확장한 것입니다.
데이터베이스 핵심 개념
- 테이블 (Table): 데이터가 실제로 저장되는 구조로, 행(Row)과 열(Column)로 구성됩니다. 특정 주제와 관련된 데이터를 모아 놓은 단위입니다.
- 행 (Row) 또는 튜플 (Tuple): 테이블에서 하나의 레코드(Record)에 해당하는 가로 줄입니다. 각 행은 고유한 데이터를 나타냅니다.
- 열 (Column) 또는 속성 (Attribute): 테이블에서 특정 속성(Property)을 나타내는 세로 줄입니다. 각 열은 데이터의 특정 종류를 정의합니다.
- 필드 (Field) 또는 셀 (Cell): 테이블에서 행과 열이 만나는 하나의 공간으로, 실제 데이터 값이 저장됩니다.
- 스키마 (Schema): 데이터베이스의 전체적인 구조와 제약 조건을 정의한 것입니다. 테이블, 열, 데이터 타입, 관계 등이 포함됩니다.
- 키 (Key): 테이블에서 특정 행을 고유하게 식별하거나, 테이블 간의 관계를 설정하는 데 사용되는 하나 이상의 열입니다.
- 기본 키 (Primary Key): 테이블의 각 행을 고유하게 식별하는 데 사용되는 키입니다. 중복되거나 NULL 값을 가질 수 없습니다.
- 외래 키 (Foreign Key): 다른 테이블의 기본 키를 참조하는 키입니다. 테이블 간의 관계를 연결하는 데 사용됩니다.
- SQL (Structured Query Language): 관계형 데이터베이스와 상호작용하기 위한 표준 언어입니다. 데이터 조회, 삽입, 수정, 삭제 등 다양한 작업을 수행할 수 있습니다.
데이터베이스 관리 시스템 (DBMS)
데이터베이스 관리 시스템(DBMS)은 사용자와 데이터베이스 사이에서 데이터를 관리하고 운영하는 소프트웨어입니다. 데이터를 효율적으로 구성하고 접근하며 보안을 유지하는 역할을 합니다. (예: MySQL, PostgreSQL, Oracle, MongoDB)
'SQL' 카테고리의 다른 글
[MySQL] Leetcode - 1280. Students and Examinations (0) | 2024.07.31 |
---|---|
[MySQL] 프로그래머스 - 물고기 종류 별 잡은 수 구하기 (0) | 2024.07.15 |
[MySQL] 프로그래머스 - 노선별 평균 역 사이 거리 조회하기 (0) | 2024.07.07 |
[MySQL] 프로그래머스 - 월별 잡은 물고기 수 구하기 (0) | 2024.07.01 |
[MySQL] 프로그래머스 - 물고기 종류 별 대어 찾기 (0) | 2024.06.13 |