반응형
데이터베이스란?
일정한 규칙이나 규약을 통해 구조화되어 저장되는 데이터 모음.
다양한 형태와 구조로 존재하며 사용자나 애플리케이션이 데이터를 효율적으로 저장하고 검색할 수 있도록 설계되어 있다.
- 데이터 무결성:
데이터베이스는 데이터의 일관성과 정확성을 유지하는 데 도움을 준다. - 데이터 보안:
사용자 접근 권한을 설정하여 민감한 데이터를 보호할 수 있다. - 효율적인 데이터 관리:
대량의 데이터를 효율적으로 저장하고 검색할 수 있다. - 데이터 중복 최소화:
데이터베이스는 데이터 중복을 줄이고 저장 공간을 절약하는 데 기여한다.
주요 설계 개념
엔티티(Entity)
- 데이터베이스에서 관리해야 할 대상이나 객체를 모델링한 것.
- DB내에서 하나의 고유하게 식별될 수 있는 속성들을 가짐.
- 실 세계의 사물, 개념, 사람 등을 나타낼 수 있다.
예) 학생정보시스템에서 '학생', '강의', '교수' 등이 엔티티가 될 수 있다.
🆙 약한 엔티티 / 강한 엔티티
- 약한 엔티티(Weak Entity)
- 독립적으로 존재할 수 없고 다른 강한 엔티티에 의존하는 엔티티.
- 보통 자체적인 primary key를 갖고있지 않아, 관련된 강한 엔티티의 키를 참조함.
- 강한 엔티티(Strong Entity)
- 다른 엔티티에 의존하지 않는 독립적인 엔티티.
- 자체적인 primary key를 가지고 있음.
예) A가 혼자 존재할 수 없고 B의 존재 여부에 따라 종속적이라면 A는 약한 엔티티, B는 강한 엔티티이다.
학생 / 강의가 강한 엔티티이고, 강의 등록은 약한 엔티티이다.
릴레이션(Relation)
- 엔티티간의 관계를 의미
- 관계형 데이터베이스에서 릴레이션은 '테이블' 이라고 한다.
- NoSQL 데이터베이스에서는 '컬렉션' 이라고 한다.
- 릴레이션의 유형은 다음과 같다
- 1:1(일대일) 관계: 하나의 엔티티가 다른 엔티티와 하나의 관계를 가지는 경우
예) 한 명의 학생이 하나의 학생증을 가짐. - 1:N(일대다) 관계: 하나의 엔티티가 여러 엔티티와 관계를 가지는 경우
예) 한 명의 교수가 여러 과목을 가르침. - N:M(다대다) 관계: 여러 엔티티가 여러 엔티티와 관계를 가지는 경우
예) 여러 학생이 여러 강의를 수강할 수 있음.
- 1:1(일대일) 관계: 하나의 엔티티가 다른 엔티티와 하나의 관계를 가지는 경우
속성(Attribute)
- 엔티티의 특성을 나타내는 요소이다.
- 엔티티는 여러 속성을 가질 수 있다.
예) 학생 엔티티에서 '학생ID', '이름', '주소', '전화번호' 등이 속성이다.
도메인(Domain)
- 속성이 가질 수 있는 값의 범위 or 집합.
- 데이터베이스의 무결성을 유지하는데 중요한 역할을 함.
예) '학생ID' 속성의 도메인은 정수 값이어야 하고, '이메일' 속성의 도메인은 올바른 이메일 형식이어야 합니다
주요 구성 요소
테이블(Table)
- 데이터는 테이블에 저장된다.
- 테이블은 행(Row)과 열(Column)로 구성된다.
- 행은 개별 데이터 항목을, 열은 데이터 속성을 나타냅니다.
레코드(Record) / 행(Row)
- 테이블 내의 개별 데이터 항목을 레코드 또는 행이라고 한다.
- 각 행은 고유한 데이터를 포함합니다.
필드(Field) / 열(Column)
- 테이블 내의 각 열은 데이터의 특정 속성을 나타내며, 필드라고도 한다.
- 예를 들어, 고객 정보 테이블에서는 "이름", "주소", "전화번호" 등이 필드가 된다.
기본 키(Primary Key), 외래 키(Foreign Key)
- 기본키
- 각 행을 고유하게 식별하기 위한 고유한 값을 가진 필드이다.
- 기본 키는 중복될 수 없으며 null 값을 가질 수 없다.
- 외래키
- 한 테이블의 필드가 다른 테이블의 기본 키를 참조하는 경우, 이 필드를 외래 키라고 한다.
- 이는 테이블 간의 관계를 정의하는 데 사용된다.
DBMS(Database Management System)
데이터베이스를 생성, 관리, 운영하는 SW 시스템.
데이터 저장, 검색, 업데이트, 삭제 등을 효율적으로 수행.
데이터의 일관성, 무결성, 보안을 보장.
DBMS 유형
- 관계형 데이터베이스 관리 시스템(RDBMS):
- 데이터는 테이블 간의 관계를 기반으로 저장된다.
- SQL(Structured Query Language)을 사용하여 데이터를 관리한다.
- 예: MySQL, PostgreSQL, Oracle, Microsoft SQL Server
- 비관계형 데이터베이스(NoSQL):
- 다양한 데이터 모델(문서, 그래프, 키-값, 컬럼 지향)을 사용하여 데이터를 저장한다.
- 대규모 데이터와 높은 확장성을 처리하는 데 적합하다.
- 예: MongoDB, Cassandra, Redis, Neo4j
- 객체 지향 데이터베이스(Object-oriented Database):
- 데이터를 객체로 저장하며, 객체 지향 프로그래밍 언어와의 호환성이 높다.
- 예: db4o, ObjectDB
DBMS별 특징
- MySQL: 오픈 소스 RDBMS로, 웹 애플리케이션에서 많이 사용된다.
- PostgreSQL: 오픈 소스 RDBMS로, ACID 준수와 확장성이 뛰어나다.
- MongoDB: NoSQL 데이터베이스로, JSON 유사 문서 형식으로 데이터를 저장한다.
- Oracle Database: 상용 RDBMS로, 대기업에서 많이 사용한다.
- Microsoft SQL Server: Microsoft에서 개발한 RDBMS로, 다양한 비즈니스 애플리케이션에 사용한다.
DBMS의 주요 기능
- 데이터 정의(DDL, Data Definition Language):
- 데이터베이스 구조(스키마)를 정의하고 수정하는 명령어들로, 테이블 생성, 수정, 삭제 등을 포함
- CREATE TABLE, ALTER TABLE, DROP TABLE
- 데이터 조작(DML, Data Manipulation Language):
- 데이터베이스 내의 데이터를 조작하는 명령어들로, 데이터 삽입, 업데이트, 삭제, 검색을 포함
- SELECT, INSERT, UPDATE, DELETE
- 데이터 제어(DCL, Data Control Language):
- 데이터베이스에 대한 접근 권한을 제어하는 명령어들로, 사용자 권한 부여와 회수를 포함
- GRANT, REVOKE
- 트랜잭션 관리(TCL, Transaction Control Language):
- 데이터베이스 트랜잭션을 제어하는 명령어들로, 트랜잭션의 시작, 종료, 롤백 등을 포함
- BEGIN, COMMIT, ROLLBACK
728x90
반응형
'Computer Science > Database' 카테고리의 다른 글
SQL과 NoSQL (2) | 2024.11.24 |
---|---|
SQL injection 종류와 방지 (0) | 2024.11.23 |
조인(JOIN) - ANSI SQL, MySQL, Oracle 예 (0) | 2024.11.22 |
트랜잭션(Transaction) & 트랜잭션 격리성 (0) | 2024.11.18 |
키(Key) (0) | 2024.11.11 |