혼자 공부하는 공간

[SQL기본 및 활용] 2020년 SQLD 내용 정리 :: SQL 기본 #1 본문

자격증/SQLD

[SQL기본 및 활용] 2020년 SQLD 내용 정리 :: SQL 기본 #1

god_z 2020. 8. 14. 15:59

<목차>

<< 관계형 데이터베이스 개요 >>

 

1. 데이터베이스

  1. 넓은 의미
    * DB는 일상적인 정보들을 모아 놓은 것 자체를 의미

  2. 일반적 의미

    * 특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장해 놓은 것을 의미

  3. 예시
    * 학교 : 학생 관리를 목적으로 학생 개개인의 정보를 모아둠
    * 기업 : 직원들을 관리하기 위해 직원들의 이름, 부서, 월급 등의 정보를 모아둠
    ---> 위의 정보들을 엑셀과 같은 SW를 사용해서 정리하고 저장할 수 있지만, 데이터의 양이 점점 많아지고 여러 사람들이 동시에 엑셀을 사용해 데이터를 관리하게 되면 중요한 데이터에 문제가 생기는 경우가 발생할 수 있음
    ---> 많은 사용자들은 보다 효율적인 데이터 관리 및 데이터의 손실에 대해 복구할 수 있는 강력한 기능의 SW가 필요하다. 이러한 요구를 만족시켜주는 시스템을 DBMS(DataBase Management System)라 함

 

1-1. 데이터베이스의 발전

  1. 1960년대

    * 플로우차트 중심의 개발 방법 사용

    * 파일 구조를 통해 데이터 저장/관리

  2. 1970년대

    * DB관리 기법이 처음 태동되던 시기

    * 계층형(Hierarchical) DB, 망형(Network) DB 상용화

  3. 1980년대

    * 현재 대부분의 기업에서 사용되고 있는 관계형(Relational) DB 상용화

    * Oracle, Sybase, DB2 제품 사용

  4. 1990년대

    * Oracle, Sybase, Informix, DB2, SQL Server 외 많은 제품들이 보다 향상된 기능으로 정보 시스템의 핵심 솔루션으로 자리잡음

    * 객체 지향 정보를 지원하기 위해 객체 관계형 DB로 발전

 

1-2. 관계형 데이터베이스

  1. 등장

    * 1970년도 영국의 수학자 E.F. Codd 박사의 논문에서 처음으로 소개

    * IBM의 SQL 개발 단계를 거치고 Oracle을 선발로 여러 회사에서 상용화된 제품을 개발

    * 이후 파일 시스템/계층형/망형 DB 대부분을 대체하면서 주력 DB로 자리잡음

  2. 중요성

    * 파일 시스템에서 분산된 데이터 간 정합성 유지에 과다한 노력이 필요 (한 파일을 여러 개로 복사하고 각각 다른 부분을 수정한 뒤 복사했던 모든 파일의 수정 사항을 합치는 데에 필요한 노력이라고 생각하면 됨)

    * 관계형 DB에서는 많은 사용자들이 동시에 데이터를 공유 및 조작할 수 있는 기능을 제공 (정규화를 통한 이상 현상 제거, 데이터 중복 제거, 동시성 관리, 병행 제어 때문에)

    * 메타 데이터를 총괄 관리할 수 있기 때문에 데이터의 성격, 속성, 표현 방법 등을 체계화하고 데이터 표준화를 통해 데이터 품질 확보

    * DBMS는 인증된 사용자만이 참조할 수 있도록 보안 기능을 제공

    * 여러 제약조건을 이용해 사용자가 실수로 조건에 위배되는 데이터를 생성하는 것을 방지할 수 있다. (무결성 보장)

    * 갑작스런 장애로부터 데이터가 제대로 반영될 수 있도록 보장

    * 데이터 회복 및 복구 기능 제공

 

2. SQL (Structured Query Language)

  1. 정의
    * 관계형 DB에서 데이터 정의/조작/제어를 하기 위해 사용하는 언어

  2. 특징

    * 다른 개발 언어에 비해 기초 단계 학습은 쉬운 편

    (시스템에 미치는 영향이 크므로 고급 SQL, SQL 튜닝은 굉장히 중요함)

    * 구체적인 용어는 다르더라도 대부분의 관계형 DB는 ANSI/ISO 표준을 따르므로 상당 부분 문법에 비슷한 부분이 많음

    (벤더끼리의 차별화를 위해 추가 기능이나 내장 함수 등 독자적인 개발을 진행)

  3. 목적

    * 정확한 데이터를 출력하는 것

    * SQL 튜닝의 경우 가장 효과적인 SQL 작성이 목표(응답시간, 자원 활용 최소화 고려)

  4. 언어의 분류

SQL 문장의 종류

 

3. TABLE

테이블에 저장할 수 있는 자료들

  1. 정의

    * 관계형 DB에서 데이터가 저장되는 기본 단위.

    * 모든 자료는 테이블에 등록되고, 테이블로부터 원하는 자료를 추출할 수 있음.
    * 행(row) + 칼럼(column)으로 이루어지며 2차원 구조로 표현

  2. 특징

    * 반드시 하나 이상의 칼럼을 가짐.

    (칼럼 : 선수, 팀, 팀연고지, 포지션, 등번호, 생년원일, ....과 같은 더 이상 나눌 수 없는 속성 ; 아래 표 참고)

  3. 구조

테이블의 구조

 

 

3-1. 정규화

테이블의 정규화

  1. 개요
    * 데이터를 하나의 테이블에 저장하지 않음.
    * <선수> 테이블과 <구단> 테이블로 나누어져 있음.
    * 분할된 테이블은 칼럼의 값에 의해 연결됨. (팀 코드)

  2. 정의

    * 테이블을 분할하여 데이터의 불필요한 중복을 줄여 데이터의 정합성 확보 및 이상 현상을 제거하는 데이터 모델링에서의 중요한 프로세스

  3. 용어

관계된 용어들

 

4. ERD (Entity Relationship Diagram)

팀 - 선수 ERD

  1. 개요
    * 각 테이블은 다른 테이블과 어떤 의미의 연관성이나 관계를 가질 수 있다. 이와 같은 관계의 의미를 직관적으로 표현할 수 있는 좋은 수단

  2. 구성 요소
    * Entity (엔티티) : 팀, 선수 ---> 테이블과 연결
    * Relationship (관계) : 소속 ---> 외래키/기본키로 연결
    * Attribute (속성) : 테이블의 특징 ---> 칼럼으로 연결

  3. 예시

K - 리그 ERD (IE & Barker)

  • 관계 설명

    • 하나의 팀은 여러 선수를 포함 + 한 명의 선수는 하나의 팀에 속함
      * <축구선수> 테이블에 축구팀의 PK인 TEAM_ID가 외래키(FK)로 존재하고 NOT NULL의 제약조건이 걸려있다면 "꼭" 이라는 조건이 붙음

    • 하나의 팀은 하나의 경기장을 가짐 + 하나의 경기장은 하나의 팀을 가질 수 있음
      * <축구팀> 테이블에 경기장의 PK인 STADIUM_ID가 외래키(FK)로 존재하고 NOT NULL의 제약조건이 걸려있다면 "꼭" 이라는 조건이 붙음

    • 하나의 경기장은 여러 일정을 가질 수 있음 + 하나의 일정은 하나의 운동장에 배정됨

 

 

출처

http://www.dbguide.net/db.db?cmd=view&boardUid=148189&boardConfigUid=9&categoryUid=216&boardIdx=134&boardStep=1

 

데이터 전문가 지식포털 DBGuide.net

관계형 데이터베이스 개요 DDL DML TCL WHERE 절 함수(FUNCTION) GROUP BY, HAVING 절 ORDER BY 절 조인(JOIN) 1. 데이터베이스 흔히 현대사회를 가리켜 정보화 사회라고 한다. 그만큼 일상생활 속에서 수 없이 쏟�

www.dbguide.net

 

질문은 댓글로 남겨주시면 되겠습니다. 감사합니다.

Comments