[포스코X코딩온 스마트팩토리 개발자 과정 1기] Database / SQL 4일차

맨 땅에 개발자 되기·2023년 3월 3일

키 ( Key )

무언가를 식별하는 역할

관계 데이터베이스에서 키는 특정 투플(행)을 식별할 때 사용하는 속성 또는 속성의 집합

릴레이션 간 관계를 맺는 데도 사용

키의 종류

  1. 슈퍼키 ( Super Key ) : 투플(행)을 유일하게 식별 가능 (유일성)

ex ) 고객번호, 전화번호
ex) (고객번호, 이름) 등등 →를 포함한 모든 속성이 슈 퍼키가 될 수 있음


(학번) (학번, 이름) (학번, 학과) (학번, 주민번호) (학번, 이름, 학과) (학번, 이름, 주민번호) (학번, 학과, 주민번호) (학번, 이름, 학과, 주민번호) (주민번호) (주민번호, 이름) (주민번호, 학과) (주민번호, 이름, 학과)

→ 겹치지 않게 총 12개

  1. 후보키 ( Candidate Key ) : 투플(행)을 유일하게 식별할 수 있는 속성의 최소 집합 ( 유일성 + 최소성 )
    후보키는 슈퍼키에서 선택되어 짐

ex ) 고객번호, 전화번호

학번, 주민번호

  1. 기본키 ( Primary Key, PK ) : 후보키 중 하나를 선택하여 릴레이션을 대표하는 속성 → 기본키 속성은 밑줄
  • 릴레이션 내 투플(행)을 식별할 수 있는 고유한 값 ( 유일성 )
  • NULL 값 허용 안됨 ( 값이 없음 )
  • 키 값의 변동이 일어나지 않아야 함 ( 후변경 불가능 )
  • 최대한 적은 수 의 속성을 가져야 함 ( 최소성 )
  • 향후 키를 사용하는 데 문제 발생 소지가 없어야 함 ( 개인정보 NONO )

**NULL : “값이없음”, “아직 입력되지 않은 값”, “알 수 없는 값” → 숫자 0과는 완전 다름


학번 ( 가능하나, 주민번호는 개인정보의 유출 위험이 있음 )

**복합키 ( Composite Key ) : 두 개 이상의 속성으로 이루어진 키

추가실습


  1. 대리키/인조키 ( Artificial Key ) : 마땅한 기본키가 없는 경우, 일련번호 속성을 만들어 기본키로 만듦

ex) 고객번호, 상품번호로는 기본키로 충족되지 않기에,
주문번호라는 대리키/인조키 속성을 일부러 만들어 사용

  1. 대체키 ( Alternate Key ) : 후보키 중에서 기본키로 선정되지 않은 후보키

후보키 : 학번, 주민번호
기본키 : 학번 ( 주민번호는 개인정보 유출위험으로 기본키 X )
대체키 : 주민번호

  1. 외래키 ( Foreign Key, FK ) : 다른 릴레이션의 기본키를 참조하는 속성 ( 참조 : 다른 기본키의 값을 빌려오다 )
  • 관계 데이터 모델의 특징인 “Relation”을 표현
  • 다른 릴레이션의 기본키를 참조하는 속성
  • 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션 도메인은 서로 같아야 함
    → 빌리고 빌려주는 두 테이블 도메인이 서로 같아야함
  • 참조되는(기본키) 값이 변경되면 참조하는(외래키) 값도 변경됨
    → 빌려주는 값이 변경, 빌리는 값도 변경
  • NULL 값과 중복 값 등 허용
  • 자기 자신의 기본키를 참조하는 외래키 가능

실습01

자유 실습 가이드 -> 병원 데이터베이스를 만들어보자!
의사 (사번(PK), 이름, 이메일, 진료과목, 직급)
환자 (환자번호(PK), 이름, 병명, 담당의_사번(FK), 진료일자)
병실 (호수(PK), 수용인원, 환자번호(FK))

무결성 제약조건

데이터 무결성 ( Intergrity ) :

데이터베이스에 저장된 데이터의 정확성과 일관성을 유지

관계 데이터 모델 만들 때, 지켜야하는 제약 조건

DBMS가 기본적인 제약조건을 통해 데이터 무결성을 지킴

  • 도메인 무결성 제약조건 ( Domain Intergrity Constraint )
    • 하나의 컬럼의 모든 값은 같은 도메인으로부터 (형식)
  • 개체 무결성 제약조건 ( Entity Intergrity Constraint )
    • 기본키(PK)로 선언된 속성은 NULL이 될 수 없음
    • 한 릴레이션 내에 기본키는 only 하나
  • 참조 무결성 제약조건 ( Referential Intergrity Constraint )
    • 외래키(FK)는 다른 릴레이션의 기본키(PK)를 참조

사상 ( Mapping )

ER Model Diagram ————> 관계 데이터 모델

ER Model은 실제 데이터베이스를 구축하기 위해 논리적 모델링 단계를 거침

2진 관계 ( Binary Relationship ) : 두 개체가 관계를 맺음

  • 이진 1 : 1 관계 타입

  • 이진 1 : N, N : 1 관계 타입 : 1의 개체가 N의 개체에 외래키로

  • 이진 N : M, M : N 관계 타입

예제

실습02



개체 직원은 개체 부서에 소속 되어있다라는 관계를 가짐
한 부서는 여러 명의 직원이 소속될 수 있음 ( 1:N 관계 )
개체 직원의 속성은 직원번호(PK), 직원이름, 직책
개체 부서의 속성은 부서번호(PK), 부서이름
이 때 1:N 관계를 짓기 위해서 개체 부서의 부서번호(PK)가 개체 직원의 외래키(FK)로 활용

🐱‍🚀느낀점

이번 수업을 통해서 속성의 종류에 대한 내용이 중요하다는 생각이 들었다. 특히, 기본키와 외래키는 개체 간의 관계를 연결할 때 반드시 사용되어지는 부분이기 때문에 개념을 확실히 알고 있는 것이 중요하다. Row Data들이 정형화되어지는 모습을 보니까 신기하기도 하다. 지금이야 실습이라 몇 안되는 Data가지고 하지만 진짜 업무에서는 훠얼씬 수 많은 Data를 다뤄야 할텐데... 처음부터 구조잡는 부분이 얼마나 중요할지에 대한 생각이 들었다.
코드만 치지 않고 엑셀로, PPT로 모델링 그려가며 하니까 좀 재밌다😉 요거 좀 나랑 맞는 거 같은 느낌적인 느낌⁉
MySQL 프로그램 사용하다던데, 재밌을 것 같아 기다려진다🎈

profile
완전초보 PLC / HMI / Intouch / C++ / SQL

0개의 댓글