SQL : 관계형 데이터베이스 개요

Skele·2025년 5월 13일

SQL

목록 보기
3/11
post-thumbnail

1. 관계형 데이터베이스

1.1 데이터베이스와 DBMS 개념

구분정의예시
데이터베이스(Database)데이터의 집합으로, 형식을 갖추지 않아도 됨엑셀 파일 모음, CSV 파일 모음
DBMS(Database Management System)데이터를 효과적으로 관리하기 위한 시스템Oracle, MySQL, SQL Server, PostgreSQL

DBMS의 장점:

  • 중앙 집중식 데이터 관리
  • 데이터 일관성 및 무결성 보장
  • 보안 강화
  • 동시 접근 제어
  • 데이터 백업 및 복구 용이

1.2 관계형 데이터베이스 구성 요소

구성 요소설명
계정데이터 접근 제한을 위한 업무별/시스템별 계정
테이블DBMS의 DB 안에서 데이터가 저장되는 기본 형식
스키마테이블의 구조와 정보를 정의하는 기본 구조

1.3 테이블의 특징

  • 소유권: 하나의 테이블은 반드시 하나의 유저(계정) 소유여야 함

  • 관계: 테이블 간 관계는 일대일(1:1), 일대다(1:N), 다대다(N:N)의 관계가 가능

  • 이름: 테이블명은 중복될 수 없으나, 소유자가 다른 경우 같은 이름으로 생성 가능

    -- 예시: SCOTT 계정과 HR 계정에 모두 EMP 테이블 존재 가능
    SCOTT.EMP
    HR.EMP
  • 데이터 조작: 테이블은 행 단위로 데이터가 입력, 삭제되며 수정은 값 단위로 가능

    -- 행 단위 삽입
    INSERT INTO emp VALUES (7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000, NULL, 10);
    
    -- 행 단위 삭제
    DELETE FROM emp WHERE empno = 7839;
    
    -- 값 단위 수정
    UPDATE emp SET sal = 5500 WHERE empno = 7839;

1.4 SQL(Structured Query Language)

  • 관계형 데이터베이스에서 데이터 조회, 조작, DBMS 시스템 관리를 위한 언어
  • SQL 문법은 대소문자를 구분하지 않음
SQL 유형포함 명령어설명
DQLSELECT데이터 조회 언어
DMLINSERT, UPDATE, DELETE데이터 조작 언어
DDLCREATE, ALTER, DROP, TRUNCATE데이터 정의 언어
DCLGRANT, REVOKE데이터 제어 언어
TCLCOMMIT, ROLLBACK, SAVEPOINT트랜잭션 제어 언어

1.5 관계형 데이터베이스 특징

특징설명
속도데이터의 분류, 정렬, 탐색 속도가 빠름
신뢰성데이터의 무결성 보장으로 신뢰성이 높음
구조 변경기존 작성된 스키마 수정이 어려움
부하 분석데이터베이스 부하 분석이 어려움

1.6 데이터 무결성(Integrity)

  • 데이터의 정확성과 일관성을 유지하고, 결손과 부정합이 없음을 보증하는 것
  • 데이터베이스에 저장된 값과 현실의 비즈니스 모델 값이 일치하는 정확성

데이터 무결성 종류

무결성 유형설명예시
개체 무결성테이블의 기본키(PK) 컬럼은 NULL값이나 중복값을 가질 수 없음학생 테이블의 학번은 NULL이 될 수 없고, 중복될 수 없음
참조 무결성외래키 값은 NULL이거나 참조 테이블의 기본키 값과 동일해야 함수강신청 테이블의 학번은 학생 테이블의 학번에 존재해야 함
도메인 무결성주어진 속성 값이 정의된 도메인에 속한 값이어야 함성별 컬럼에는 'M'과 'F'만 입력 가능
NULL 무결성특정 속성에 대해 NULL을 허용하지 않는 특징이름 컬럼에는 NULL을 허용하지 않음
고유 무결성특정 속성에 대해 값이 중복되지 않는 특징이메일 주소는 중복되지 않아야 함
키 무결성하나의 릴레이션(관계)에는 적어도 하나의 키가 존재해야 함모든 테이블은 최소 하나의 키를 가져야 함

무결성 위반 예시:

  1. 개체 무결성 위반:

    INSERT INTO students (student_id, name) VALUES (NULL, 'John');  -- 기본키가 NULL
    INSERT INTO students (student_id, name) VALUES (1001, 'John');  -- 이미 존재하는 학번(중복)
  2. 참조 무결성 위반:

    INSERT INTO enrollments (student_id, course_id) VALUES (9999, 'CS101');  -- 존재하지 않는 학생 ID
  3. 도메인 무결성 위반:

    INSERT INTO students (student_id, gender) VALUES (1002, 'X');  -- 정의된 도메인(M/F) 외의 값

2. ERD(Entity Relationship Diagram)

ERD는 데이터베이스 설계에서 중요한 도구로, 데이터베이스의 구조를 시각적으로 표현한다.

2.1 ERD의 기본 구성요소

구성요소설명
엔터티(Entity)업무가 관리하고자 하는 데이터 객체(사람, 장소, 개념 등)
속성(Attribute)엔터티가 가지는 특성이나 성질
관계(Relationship)엔터티 간의 연관성

2.2 ERD 표기법

2.2.1 IE 표기법

기호의미
직사각형 ⬜엔터티(Entity)
PK기본키(Primary Key) 속성
FK외래키(Foreign Key) 속성
실선 ───식별 관계(Identifying Relationship): 부모 테이블의 기본키가 자식 테이블의 기본키의 일부가 됨
점선 - - -비식별 관계(Non-identifying Relationship): 부모 테이블의 기본키가 자식 테이블의 일반 속성이 됨
─────|<다중성(N, 까마귀발): 관계의 한쪽 끝이 여러 인스턴스를 가질 수 있음
───────단일성(1, 막대): 관계의 한쪽 끝이 단 하나의 인스턴스를 가짐
────O선택적 관계(Optional): 관계가 필수적이지 않음 (원 표시)
──────필수적 관계(Mandatory): 관계가 반드시 존재해야 함 (원 없음)

2.2.2 Barker 표기법

기호의미
직사각형 ⬜엔터티(Entity)와 그 속성들
#기본키(Primary Key) 속성
*필수(NOT NULL) 속성
(FK)외래키(Foreign Key) 속성
실선 ───필수적 관계(Mandatory): 관계가 반드시 존재해야 함
점선 - - -선택적 관계(Optional): 관계가 필수적이지 않음
───◀다중성(N, 까치발): 관계의 한쪽 끝이 여러 인스턴스를 가질 수 있음
───단일성(1): 관계의 한쪽 끝이 단 하나의 인스턴스를 가짐
관계선 위의 화살표: 관계의 방향을 나타냄

2.2.3 표기법 비교

요소IE 표기법Barker 표기법
엔터티 표현직사각형에 이름만 표시직사각형 안에 이름과 속성 목록
기본키 표시PK 또는 밑줄# 기호
필수 속성 표시(M) 또는 표시 없음* 기호
외래키 표시FK(FK)
1:N 관계 표현────|< (까마귀발)───◀ (까치발)
식별 관계실선명시적으로 구분하지 않음
비식별 관계점선명시적으로 구분하지 않음
필수 관계원 없음 (──────)실선 (─────)
선택적 관계원 표시 (────O)점선 (- - -)
profile
Tireless And Restless Debugging In Source : TARDIS

0개의 댓글