backend
  • README
  • DOCS
    • Java Docs
    • Servlet Docs
    • JSP Docs
    • DB & SQL Docs
    • Spring Boot Docs
    • Spring Security Docs
    • AWS Docs
  • 설치하기
    • Intellij 설정
  • 자바
    • 01 Java란?
    • 02 자바 시작하기
    • 03 자료형과 연산자
    • 04 제어문
    • 05 메소드
    • 06 클래스 기초
      • Static 보충자료
      • 패키지 보충자료
    • 07 객체지향 프로그래밍
    • 08 클래스 더 알아보기
      • 열거형 ENUM 보충자료
    • 09 클래스와 자료형
      • 다형성 보충자료
      • 제네릭 보충자료
    • 10 컬렉션 프레임워크
      • 컬렉션 프레임워크 보충자료
    • 11 람다식과 함수형 프로그래밍
      • 람다식 보충자료
    • 12 오류 대비하기
      • 오류 보충자료
    • 13 멀티태스킹
      • 멀티태스킹 보충자료
    • 교재보충
      • java.lang
  • 스프링
    • 서블릿, JSP
      • 05 Servlet(서블릿)
        • 서블릿 보충자료
        • 서블릿 추가코드
        • XML, YAML, JSON
      • 06 JSP(자바 서버 페이지)
        • JSP 보충자료
      • 07 JSTL(JSP 스탠다드 태그 라이브러리)
        • JSTL 보충자료
      • 08 Cookie(쿠키), Session(세션)
      • 09 서블릿,필터,리스너
        • 서블릿,필터,리스너 보충자료
      • 11 도서관리 프로젝트 실습
    • Spring Boot
      • 01 스프링 등장 배경, 객체지향
        • 스프링 등장 배경, 객체지향 보충자료
      • 02 IOC(제어의 역전), DI(의존성 주입)
        • IOC 보충자료
        • DI 보충자료
      • 03 스프링 구조
        • 스프링 구조 보충설명
      • 04 테스트코드 실습
      • 05 스프링 빈 설정
        • 스프링 빈 설정 보충자료
      • 06 싱글톤
        • 싱글톤 보충 자료
      • 07 스프링 빈 자동설정
        • 스프링 빈 자동설정 보충자료
      • 08 빈 생명주기
        • 빈 생명주기 보충자료
      • 09 빈 스코프
        • 빈 스코프 보충자료
      • 10 스프링 MVC
        • 스프링 MVC 보충자료
        • 데이터베이스 연동에 필요한 부분
      • 11 Validation(검증)
        • Validation(검증) 보충자료
      • 12 Bean Validation(빈검증)
        • Bean Validation(빈검증) 보충자료
      • 13 예외처리
        • 예외처리 보충자료
      • 14 타입변환
      • 15 JDBC(Java Database Connectivity)
      • 16 커넥션풀
      • 17 트랜잭션
        • 트랜잭션 보충자료
      • 18 JDBC 템플릿 활용
      • 19 MyBatis
      • 20 JPA(Java Persistence API)
      • 22 게시판 프로젝트 실습
    • Spring Security
      • 보안(Security)
      • Spring Security
      • 2. Spring Security 알아보기
        • 보안 위협 실제 사례와 방어 전략
      • 3. Spring Security 기본 동작 흐름
      • 4. Spring Security로 인증 권한 추가하기
        • Spring Security의 인증 및 인가
      • 5. Spring Security에서 세션 관리하기
        • 세션(Session)과 쿠키(Cookie) 비교, 토큰(Token)과의 관계
        • 해싱 및 해싱알고리즘
        • base64
      • 6. Spring Security 악용 보호
        • SameSite
      • 7. Spring Security로 인가 권한 추가하기
      • 8. Bcrypt(비크립트) 암호화
      • OAuth2 적용하기
  • 네트워크
    • HTTP
    • OSI 7계층
  • DB&SQL
    • 01 Database(데이터베이스)와 SQL 개요
    • 02 관계형 모델
    • 03 집합
    • 04 JOIN 연산
    • 05 MySQL
      • 세이브포인트
      • DBeaver, Mysql 오토커밋 설정 관련
    • 06 SQL 기초
      • 예시데이터 쿼리문
    • 07 SQL 실습
      • 실습 스키마
    • 08 Join 활용
      • 실습스키마
    • 09 SQL 활용
      • 실습스키마
    • 10 정규화
      • 실습 스키마
    • 데이터타입
    • 예시 프로젝트 스키마 구성
  • AWS
    • SSL 연결하기
    • 보충설명
Powered by GitBook
On this page
  • 집합
  • 집합의 특징
  • 릴레이션과 집합
  • 집합의 연산
  • 합집합(Union)
  • 교집합 (Intersection)
  • 차집합 (Difference)
  • 곱집합(Product)
  1. DB&SQL

03 집합

Previous02 관계형 모델Next04 JOIN 연산

Last updated 5 months ago

집합

  • 집합은 특정 조건에 따라 구분된 객체들의 모임을 의미하고 각각의 객체를 원소(Element)라고 부름

집합의 특징

  • 원소의 순서가 없음: 집합 내의 원소는 순서가 없으며, 순서와 상관없이 집합을 구성함

  • 중복이 없음: 집합 내의 원소는 중복될 수 없음. 동일한 원소가 여러 번 존재할 수 없음

릴레이션과 집합

  • 릴레이션(본체)은 튜플(행)의 집합

  • 아래 학생 릴레이션은 3가지 튜플의 집합임

  • 릴레이션을 수학적 집합 형태로 나타내면 우측 그림과 같음

집합의 연산

  • 집합의 연산은 집합 이론에서 집합들 간의 관계를 정의하고, 이를 통해 새로운 집합을 생성하는 다양한 연산을 의미함

  • 집합 연산은 두 개 이상의 집합에 대해 수행되며, 데이터베이스 이론뿐만 아니라 수학, 논리학, 프로그래밍 등 다양한 분야에서 사용됨

  • 합집합(Union), 교집합(Intersection), 차집합(Difference), 곱(Product) 등이 있음

합집합(Union)

  • 수학적으로 합집합은 두 집합 A와 B의 합집합은 A 또는 B에 속하는 모든 원소의 집합을 의미함

  • 합집합은 두 집합의 모든 원소를 포함하지만, 동일한 원소는 한 번만 포함함

  • 기호 : A∪B

  • 예시

    • 집합 A = {1, 2, 3}

    • 집합 B = {3, 4, 5}

    • 합집합 A∪B={1,2,3,4,5}

  • 관계형 모델에서 합집합은 두 개의 릴레이션에 포함된 모든 튜플로 구성된 릴레이션을 반환함

  • 두 개의 릴레이션에 공통된 속성값이 포함됐다면 합집합은 중복 값이 제거된 상태로 반환

수학적 이론과 관계형 모델에서 합집합(Union)의 차이

  • 수학적 집합 이론에서는 각 원소가 집합 내에 존재하기만 하면 그 구조나 속성(모양)이 달라도 합집합을 수행할 수 있음

  • 하지만 관계형 모델에서는 열의 개수와 데이터 타입이 동일해야 합집합 연산을 수행할 수 있음

  • 수학적 모델에선 다음과 같은 연산이 가능

    • 집합 A = {1, 2, 3}

    • 집합 B = {"apple", "banana"}

    • A ∪ B = {1, 2, 3, "apple", "banana"}

  • 관계형 모델에선 두 테이블 간 열의 개수와 데이터 타입이 다르기 때문에 다음과 같은 연산이 불가

  • 이 경우 데이터베이스는 오류를 반환함

    • 학생1 ∪ 학생2

교집합 (Intersection)

  • 수학적으로 교집합은 두 집합 A와 B의 교집합은 A와 B에 모두 속하는 원소의 집합을 의미

  • 기호 : A∩B

  • 예시

    • 집합 A = {1, 2, 3}

    • 집합 B = {3, 4, 5}

    • 교집합 A∩B={3}

  • 관계형 모델에서 교집합은 두 개의 릴레이션에 모두 포함된 공통 부분을 릴레이션으로 반환함

수학적 이론과 관계형 모델에서 교집합(Intersection)의 차이

  • 수학적 집합 이론에서는 합집합과 마찬가지로 그 구조나 속성(모양)이 달라도 교집합을 수행할 수 있음

  • 하지만 관계형 모델에서는 열의 개수와 데이터 타입이 동일해야 교집합 연산을 수행할 수 있음

  • 수학적 모델에선 다음과 같은 연산이 가능

    • 집합 A = {1, "apple", 3.14}

    • 집합 B = {"apple", "banana"}

    • A ∩ B = {"apple”}

  • 관계형 모델에선 두 테이블 간 열의 개수와 데이터 타입이 다르기 때문에 다음과 같은 연산이 불가

  • 이 경우 데이터베이스는 오류를 반환함

    • 학생1 ∩ 학생2

차집합 (Difference)

  • 수학적으로 두 집합 A와 B의 차집합은 집합 A에는 속하지만 B에는 속하지 않는 원소의 집합을 의미함

  • 기호 : A−B

  • 예시

    • 집합 A = {1, 2, 3}

    • 집합 B = {3, 4, 5}

    • 차집합 A−B = {1,2}

  • 관계형 모델에서 차집합은 첫 번째 테이블에는 존재하지만 두 번째 테이블에는 없는 튜플을 반환함

수학적 이론과 관계형 모델에서 차집합(Difference)의 차이

  • 수학적 집합 이론에서는 합집합, 교집합과 마찬가지로 그 구조나 속성(모양)이 달라도 차집합을 수행할 수 있음

  • 하지만 관계형 모델에서는 열의 개수와 데이터 타입이 동일해야 교집합 연산을 수행할 수 있음

  • 수학적 모델에선 다음과 같은 연산이 가능

    • 집합 A = {1, "apple", 3.14}

    • 집합 B = {"apple", "banana"}

    • A - B = {1, 3.14}

  • 관계형 모델에선 두 테이블 간 열의 개수와 데이터 타입이 다르기 때문에 다음과 같은 연산이 불가

  • 이 경우 데이터베이스는 오류를 반환함

    • 학생1 - 학생2

곱집합(Product)

  • 수학적으로 두 집합 A와 B의 곱은 A의 모든 원소와 B의 모든 원소의 순서쌍으로 이루어진 집합을 의미함

  • 기호 : A×B

  • 예시

    • 집합 A = {1, 2}

    • 집합 B = {a, b}

    • 곱집합 A×B={(1,a),(1,b),(2,a),(2,b)}

  • 관계형 모델에서 곱집합은 두 테이블의 모든 행 조합을 반환함

  • 아래 예제에서는 모든 학생이 모든 과목을 수강하는 것

  • 두 릴레이션의 모든 튜플을 조합하여 새로운 튜플을 생성하기 때문에 열의 개수나 데이터 타입에 상관없음