SQL자격증하면서 정말 많이 봤지만
학습한 내용들을 복습하지 않으면 안되니 !
한 방에 정리해보려합니다.
DBMS에 대해 알아보기 전에 데이터베이스를 알아합니다.
데이터 베이스 : 데이터를 효율적으로 관리하고 활용할 수 있는 시스템
중복 최소화 , 데이터 무결성, 일관성 , 관리 효율성 , 데이터 공유, 백업 복구 , 무결성 유지 , 중앙 집중식 데이터 관리....비용 절감 이라고는 하지만 데이터 베이스를 유지하기 위한 인건비, 시스템 비용도 무시할 수 없다고 생각합니다..데이터베이스 관리 시스템으로, 데이터베이스를 생성, 관리, 조작, 제어할 수 있는 소프트웨어입니다. DBMS를 통해 데이터베이스와 사용자 간의 상호작용을 효율적이고 체계적으로 처리할 수 있습니다.
그리고 데이터베이스를 관리하는 DBMS의 소프트웨어 종류는 다양합니다.
가장 대표적인 DBMS는 관계형 DBMS(RDBMS)이며 물론 그외 DBMS들도 목적과 필요에 따라 필요한 DBMS들이기도 합니다.
데이터를 테이블 형식으로 저장. SQL을 사용하여 데이터 관리 및 검색할 수 있습니다.
데이터의 관계를 명확하게 정의해야한다는 특징이 있습니다.
주요 사용 사례 : 기업의 트랜잭션 시스템 <- 은행,회계 등
예: MySQL, PostgreSQL, Oracle DB, MariaDB.
비정형 데이터 및 대용량 데이터를 유연한 구조를 가지고 있습니다.
RDBMS보다 확장성이 뛰어나고 , 데이터의 복잡한 관계를 명시적으로 정의하지 않아도 됩니다.
또한 다양한 유형의 데이터를 효율적으로 처리 가능
주요 사용 사례 : 빅데이터 처리(로그데이터) , 실시간 어플리케이션(채팅,SNS) , 문서 기반 데이터 저장(콘텐츠 관련)
예: MongoDB, Cassandra, Redis
객체 지향 프로그래밍 언어의 개념을 데이터베이스에 적용.
객체의 속성 및 메소드를 데이터베이스에 직접 저장하여 객체 지향 언들과 호환성을 높힙니다.
사용 예시 사례 : SW개발에서 데이터와 객체를 직접 연결하거나, 복잡한 데이터 모델링이 필요한 어플리케이션에서 사용
예: db4o, ObjectDB.
여러 네트워크에 분산된 데이터를 관리하여 분산 처리, 확장성을 제공. 분산 시스템에서 데이터의 일관성 및 복구 가능성을 보장합니다.
사용 예시 사례 : 클라우드 서비스 ,대규모 분산 데이터 저장소, 실시간 처리 시스템에서 가용성을 요구할때 ?.... (정확하지는 않습니다)
예: Google Spanner, Apache Cassandra.
테이블 : 데이터를 행과 열의 구조로 저장하는 단위 , 데이터베이스에서 기본이 되는 구조
릴레이션(Relation)이라고도 부릅니다.
컬럼 : 테이블의 세로 방향 데이터 , 속성(어트리뷰트)를 나타내고 , 컬럼의 다른 이름으로 속성, 열이라고도 부릅니다.
레코드 : 테이블의 가로 방향 데이터, 학생이라는 테이블의 1개의 레코드를 불러오게 되면
한 학색의 모든 정보(각 속성의 값을 불러옴)를 확인 할 수 있습니다. 행, 튜플 이라고도 합니다.
스키마 : 데이터베이스의 구조를 정의 기술한 것으로 테이블, 열, 속성, 타입, 관계 등을 설명해야합니다.
제약 조건 : 데이터베이스에서 데이트의 무결성이 필수 입니다. 그러기 위해선 규치이 필요합니다.
NOT NULL: 값이 비어 있을 수 없음.
UNIQUE: 값이 고유해야 함.
PRIMARY KEY: 고유성과 NOT NULL을 결합.
FOREIGN KEY: 다른 테이블의 값을 참조.
... 그밖에서 UNIQUE AUTO 등등 다양한 제약조건으로 데이터의 무결성을 보존 할 수 있습니다.
그 외에도 단어가 무수히 많지만.. ERD , index, 트랜잭션 , view, 등등
나머지는 직접 서칭하시는게...
데이터베이스에서 관계는 테이블 간의 관계를 의미 합니다. 가장 핵심입니다.
1:1관계 : 한 테이블의 한 행이 다른 테이블의 정확히 한 행과 연결될 때.
예시 : 사람(Person)과 여권(Passport):
한 사람은 하나의 여권만 가질 수 있음.
한 여권은 한 사람에게만 발급됨.
즉, 서로가 1:1로 연결됨
1:N관계 : 한 테이블의 한 행이 다른 테이블의 여러 행과 연결될 때.
예시 : 고객(Customer)과 주문(Order):
한 고객은 여러 개의 주문을 할 수 있음.
한 주문은 한 고객에게만 속함.
즉 , 한쪽은 1개로 모이고 반대쪽은 여러개로 분산
N:M관계 : 한 테이블의 여러 행이 다른 테이블의 여러 행과 연결될 때.
예시 : 학생(Student)과 과목(Course):
한 학생은 여러 과목을 수강할 수 있음.
한 과목은 여러 학생이 수강할 수 있음.
즉, 양쪽에서 여러개로 분산하고 있다. 기준이 누구냐에 따라 보이는 값이 달라짐
그래서 중간 테이블(junction Table)을 생성하여 두 테이블 간의 관례를 분리해야함
1차 정규화 : 반복 그룹 제거
취미라는 속성에 축구,영화,맛집구경 ... 여러 개 때려 넣으면 안됩니다.2차 정규화 : 부분 종속 제거
학번,이름,과목명,과목코드 속성이 같이 있다면학생 관련 , 과목 관련 테이블로 2개를 생성해서 분리해야한다.3차 정규화 : 이행 종속 제거
고객 , 주문내역 , 상품명 , 상품가격 이 있다고 하면상품가격은 상품명에 종속.상품명는 주문내역에 종속.주문내역 → 상품명 → 상품가격이라는 이행 종속 존재.고객 관련,상품 관련한 테이블 2개로 분리하여합니다.