이 글은 아이티뱅크 강의를 듣고 공부한 내용을 토대로 작성한 글입니다.
혹시 잘못된 내용이 있을 시 댓글로 알려주시면 감사하겠습니다 ^U^
📌 DataBase란?
DataBase는 데이터 중복 제거 및 효율적 처리를 목표로 만들어진 데이터 저장소다.
📌 DataBase를 사용하는 이유
- 수 많은 데이터를 메모장이나 엑셀에 저장할 경우 데이터의 중복 저장이 발생할 수 있다.
- 데이터 사용 시 매우 많은 파일을 하나씩 열어 원하는 데이터를 찾아야 되므로 효율적인 데이터 처리가 불가능하다.
- DB는 구조적, 관계형, 객제지향형 등으로 구분된다.
대부분은 관계형DB를 주로 사용한다.
- DB를 효과적으로 운영하고 설계하기 위해서는
DBMS( DataBase Management System )가 필요하다.
📌 DataBase의 장점
- 데이터 중복을 최소화하고 데이터의 무결성을 유지할 수 있다.
- 일관성있는 데이터 관리를 할 수 있으며, 데이터의 보안이 보장된다.
📌 DataBase의 무결성
- 데이터에 정의되는 데이터의 형식을 정의할 수 있다. (타입지정)
- 실체 무결성 : 데이터 유일성 보장(Primary key)
- 참조 무결성 :데이터 참조연결(Foreign key)
- 컬럼 무결성 : 지정된 데이터 형식을 만족하는 값만 포함하는 무결성
📌 DataBase 기본구조
| column1(속성) | column2(속성) |
|---|
| value1 | value1 |
| value2 | value2 |
| Table_A | Table2_B |
실제 데이터는 위 colunm안에 저장된다.
📌 DBMS (DataBase Management System)
- DBserver : 데이터 덩어리라고 생각하면 좋다. 이를 관리하기 위해서는 소프트웨어가 필요하다.
- DBMS란, 데이터베이스를 효과적으로 설계 운영복구 할 수 있도록 도와주는 소프트웨어로, 위에서 말한 데이터서버를 관리한다.
- 현재 관계형 데이터베이스 구조를 많이 사용하므로 RDBMS를 주로 사용하게 된다. 대표적인 RDBMS(관계형 데이터베이스 메니지먼트 서비스)로는
Oracle DB, MS-SQL, MySQL, MariaDB 등이 있다.
📌 RDBMS (Relation DataBase Management System)
💡 관계형 데이터베이스란?
- 관계형 데이터 베이스는 데이터들간의 사전에 정의된 연결 관계가 형성되어있는 데이터베이스 구조를 말한다.
- 테이블들은 관계 형성을 통해 데이터를 관리할 수 있도록 구성되어 있다.
(1:1 / 1:N / N:N --> 주로 1:N 형태가 많음)
- 테이블은 기본키를 이용하여 자신의 고유 식별 값을 가질 수 있으며, 다른 여러 테이블과의 관계 형성을 위해 외래키를 사용한다.
- 테이블들의 관계(Relation)를 얼마나 체계적으로 맺고 관리하게 구성을 했는가에 따라 성능의 차이가 발생한다.
💡 RDBMS의 기능
1. 정의 기능 (Definition Facility)
- DB, 테이블, 인덱스, 뷰, 트리거, 시퀀스 정의
- 응용 프로그램과 데이터베이스 간의 인터페이스 제공
- 논리적 구조 명세, 물리적 구조 명세
2. 조작 기능 (Manipilation Facility)
- 데이터의 검색 / 갱신 / 삽입 / 수정 등의 기능 제공
( CRUD = Create, Read, Update, Delete )
- 사용자와 데이터베이스 간의 인터페이스 제공
3. 제어 기능 (Control Facility)
- 권한 부여 및 제거
- 데이터의 정확성 및 안정성을 유지 (보안, 복구, 백업)
- 데이터베이스 자체를 제어하는 기능
DBMS의 기능을 수행하기 위해서는 SQL을 사용한다.
ANSI SQL 표준 : RDBMS를 관리하는 명령어
📌 ORM (Object Relational Mapping)
- 일반적인 RDBMS 관리방법은 SQL Query를 이용해 데이터베이스에 접근 후 데이터 조작 작업을 진행한다.
- JSP, PHP 등의 언어로 구성된 환경의 경우 HTML코드 내부에서 동적언어를 처리하는 코드를 혼합하여 코드내용에 포함한다.
- 동적 작업을 위한 코드작성을 위해 DB접근이 필요한 경우 SQL Query문을 직접 작성하여 코드 내용에 포함한다.
- Django FramWork에서는 위와 같은 방식이 아닌 ORM형식의 RDBMS관리작업을 진행한다.
- ORM방식의 경우 DB내부의 테이블과 연결하는 객체를 미리 정의 후 맵핑 된 객체를 이용하여 데이터베이스를 조작한다.
- ORM방식은 쉬운 접근성을 제공하며, SQL Query문 사용형식을 모르더라도 데이터베이스를 조작할 수 있도록 도움을 준다.