데이터베이스(DB)?
- 효율적인 데이터 관리
- 데이터를 통합하여 관리
- 데이터 누락 및 중복 방지
- 여러 사용자가 실시간으로 데이터 사용이 가능
데이터 모델

계층형 데이터 모델(Hierarchical DataModel)
- 정보를 디렉터리 형태로 분류하기 때문에, 복잡한 구조의 묘사는 불가능하다.
- 구조: 데이터를 트리구조로 표현,각 레코드는 하나의 상위 레코드에 대한 하위 레코드를 가짐
- 특징: 상위 레코드와 하위 레코드 간의 부모-자식 관계가 정의, 주로 트리구조의 계층적인 데인터에 유용
네트워크형 데이터 모델(Network DataModel)
- 계층형 데이터베이스의 단점을 보완하기 위해 자료간 연결(link)을 망(Network)형태로 자유롭게 연결할 수 있도록 개선했지만 자료구조 변경시 디스크에 저장된 데이터의 물리적 구조를 재구성해야하는 번거로움 존재
- 구조: 계층형 데이터 모델과 유사, 각 레코드는 부모 레코드를 가질 수 있습니다.
- 특징: 각 레코드 간의 관계를 명시적으로 정의, 주로 복잡한 데이터 관계를 다루는데 사용

관계형 데이터 모델(Relational DataModel)
- 구조: 테이블 형태로 데이터를 저장, 각 테이블은 레코드(행)과 필트(열)로 구성
- 특징: 표 형태로 데이터를 저장하고 SQL을 사용하여 데이터를 조작, RDBMS에서 지원
객체 지향형 데이터 모델(Object-Oriented DataModel)
- 구조: 현실 세계의 개체(Enity)와 그들 간의 상호작용을 모델링, 클래스와 객체의 개념 기반
- 특징: 데이터와 해당 동작을 함께 캡슐화, 객체간의 관계를 강조,
- 소프트웨어 개발에서 객체지향 프로그래밍 언어에서 주로 사용
정리
- 관계형 데이터 베이스가 중요하게 활용되는 이유
- 이해하기 쉬운 2차원 표 형태로 데이터를 저장
- 매우 복잡한 자료의 데이터를 정교하게 조합가능
DBMS (Database Management System)
DBMS는 데이터베이스 관리 시스템으로, 데이터의 저장, 검색, 업데이트, 관리를 위한 소프트웨어
-
DBMS 기능
- 대용량 데이터의 효율적인 처리와 접근 가능
- 데이터의 무결성, 보안, 백업 및 복구 기능을 제공
-
DBMS 특징(ACID)
- 데이터 독립성 : 물리적, 논리적 독립성
- 데이터 무결성 : 데이터의 유효성 검사를 통해 데이터 무결성을 구현
- 데이터 보안성 : 계정관리, 권한 설정
- 데이터 일관성 : 데이터의 불일치성을 배체
주요 DBMS 종류 / 특징
1. Oracle Database
- 용도: 대형 기업이나 복잡한 애플리케이션에 적합하며, 고성능, 대규모의 트랜잭션 처리와 데이터 웨어하우징에 자주 사용됩니다.
- 특징:
- 강력한 트랜잭션 관리, 높은 데이터 무결성 및 보안 기능을 제공합니다.
- 확장성이 뛰어나며, 다양한 운영 체제에서 실행됩니다.
- PL/SQL이라는 Oracle 전용 프로그래밍 언어를 사용합니다.
- 비싼 라이선스 비용이 있지만, 대규모 엔터프라이즈 환경에서의 신뢰성과 성능은 매우 높습니다.
2. MySQL
- 용도: 주로 웹 애플리케이션 및 소규모에서 중간 규모의 프로젝트에 사용됩니다.
- 특징:
- 오픈 소스이며, 사용이 쉬워 소규모 애플리케이션에 인기가 많습니다.
- PHP와의 통합이 용이하여 웹 개발에 자주 쓰입니다. (LEMP Stack)
- 비교적 가벼우면서도 성능이 좋으며, 다양한 운영 체제를 지원합니다.
- 대규모 데이터베이스와 고급 기능이 필요한 환경에는 다소 제한적일 수 있습니다.
RDBMS(Relational DBMS)
RDBMS(관계형 데이터베이스 관리 시스템)는 표 형태로 데이터를 구조화하고 관리하는 데이터베이스
데이터를 정리하고 설명하기 위해 속성과 데이터 값 간의 관계를 찾아내어 이를 테이블 형태로 나타냄

- 데이터는 속성(Attribute)과 해당 속성에 대응하는 데이터 값(Attribute Value)으로 구성
- 테이블은 열(Column)과 행(Row)으로 이뤄져 있다.
- 열(Column) = Attribite = field : 데이터의 속성
- 행(Row) = Record = Tuple : 해당 속성에 대응하는 데이터 값을 포함
- Database → Table → Column, Row
- 스키마(Schema)
- 데이터베이스의 구조를 정의하는 것
- 스키마는 테이블, 행, 열, 인덱스, 관계 등의 데이터베이스 구조를 명시
- SQL(Structured Query Language)
- 데이터베이스에서 데이터를 관리하기 위해 사용되는 표준 프로그래밍 언어
- SQL을 사용하여 데이터베이스에 질의, 업데이트, 삭제 등의 작업을 수행 가능
- 인덱스(Index)
- 데이터베이스에서 데이터 검색 속도를 빠르게 하기 위해 사용되는 객체
- 인덱스는 특정 열에 대한 포인터를 포함하여 데이터 검색 시간을 단축
- 데이터베이스 관리 시스템(DBMS)
- 데이터베이스를 생성하고 관리하는 소프트웨어
- 예를 들어, MySQL, PostgreSQL, Oracle, Microsoft SQL Server 등
- 트랜잭션(Transaction)
- 데이터베이스의 상태를 변화시키는 하나의 작업 단위
- 트랜잭션은 데이터 무결성을 유지하는 데 중요한 역할
데이터베이스 스키마(Schema)
- 데이터베이스에서 데이터의 구조와 구성을 정의하는 청사진 또는 설계도
- 데이터베이스 테이블, 필드, 관계 등을 어떻게 구성할지를 명세한 것
- 데이터베이스 시스템이 데이터를 저장, 관리, 조작하는 방식을 결정
- 논리적 스키마
- 테이블 간의 관계, 각 테이블의 속성과 데이터 타입, 제약 조건 등
- 물리적 스키마
- 데이터의 실제 저장과 관련이 있는 부분으로, 디스크에 저장하는 방식 등
- 스키마가 있다면 동일한 구조의 데이터베이스를 쉽게 만들 수 있습니다.
- 데이터베이스의 백업과는 달리 스키마는 데이터의 구조만을 정의
- 데이터 구조를 동일하게 만드는 데 사용
단점
- 성능: 대용량 데이터 처리나 복잡한 쿼리에 대한 성능이 다른 모델에 비해 낮을 수 있다.
- 확장 어려움: 수직적 확장이 한계가 있고, 수평적 확장은 복잡하고 비용이 많이 들 수 있다.
- 유연성 부족: 스키마 변경이 어려워서 요구사항 변경에 대응하기 어려울 수 있다.
- 복잡한 조인: 많은 테이블 간의 조인은 성능에 부정적인 영향을 미칠 수 있다.
- 고비용: 서버 하드웨어 및 라이선스 비용이 상대적으로 높을 수 있다.
RDBMS는 데이터의 구조화와 안정성 측면에서 강력하며, 일반적인 업무 응용에 적합합니다. 그러나 성능이나 유연성 등의 측면에서 고려해야 할 부분도 있습니다.
-
데이터베이스(Database): 구조화된 데이터의 집합입니다. 데이터베이스는 데이터를 저장, 검색, 수정, 삭제할 수 있게 해주는 시스템입니다.
-
테이블(Table): 데이터베이스 내에서 데이터가 저장되는 장소입니다. 데이터를 표 형태로 저장하는 구조
-
행(Row)/레코드(Record): 테이블 내의 개별 데이터 항목을 나타냅니다. 각 행은 하나의 데이터 항목 또는 개체를 나타냅니다.
-
열(Column)/필드(Field): 테이블 내의 특정 카테고리 또는 데이터 유형을 나타냅니다.
-
기본 키(Primary Key): 테이블 내의 각 행을 고유하게 식별하는 열입니다. 기본 키 값은 유일해야 하며, 각 행마다 다른 값을 가져야 합니다.
-
외래 키(Foreign Key): 다른 테이블의 기본 키를 참조하는 열입니다. 외래 키는 두 테이블 간의 관계를 설정하는 데 사용됩니다.
ex
| ID | 이름 | 나이 | 전공 |
|---|
| 1 | 김철수 | 20 | 컴퓨터공학 |
| 2 | 이영희 | 21 | 경영학 |
| 3 | 박민수 | 22 | 수학 |
- 데이터 베이스 : 학교 전체의 데이터 창고
- 테이블 : 학생 목록 표
- 행 : 한명 학생 정보 → 김철수 | 20 | 컴퓨터공학
- 열 : 이름, 나이 같은 속성 → “이름”, “나이”, “전공”이 열(Column)
- 키 : 학생을 구분하는 고유 번호 → 같은 이름이 있어도 ID가 다르면 다른 사람으로 구분
대표적인 RDBMS
- MySQL:
- 개방 소스 RDBMS로서 가장 인기 있는 데이터베이스 중 하나입니다.
- 다양한 환경에서 사용, 웹 애플리케이션부터 대규모 엔터프라이즈 시스템까지 다양한 용도로 활용
- PostgreSQL:
- 객체 관계형 데이터베이스 시스템으로, 확장 가능하고 풍부한 기능을 제공합니다.
- ACID 호환성 및 다양한 데이터 유형을 지원하여 고급 데이터베이스 요구에 적합합니다.