[CS공부] 22.10.17

minyoon·2022년 10월 17일
0

CS공부

목록 보기
9/12

KEY (DB)


  • Key : 검색, 정렬 시 Tuple을 구분할 수 있는 기준이 되는 Attribute

후보키 : Tuple을 유일하게 식별하기 위해 사용하는 속성들의 부분집합 (기본키로 사용할 수 있는 속성들) (유일성 + 최소성 만족해야함)

기본키 : 후보키 중 선택한 키 (NULL 값 X, 중복 X)

대체키 : 후보키 - 기본키

슈퍼키 : 후보키들의 집합 중 유일성은 만족하지만 최소성은 만족하지 않아도 되는 키

외래키 : 다른 릴레이션의 기본키를 참조하는 속성의 집합

JOIN


관계형 데이터베이스에서 조인(join)이란?

  • 두개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법
  • 적어도 하나의 칼럼을 공유하고 있어야 한다.

종류

INNER JOIN

  • 교집합, 테이블의 중복된 값을 보여준다.

LEFT OUTER JOIN

  • 왼쪽 테이블을 기준으로 JOIN한다.(오른 쪽 테이블에서는 공통 속성 중 왼쪽 테이블에 있는 값의 튜플만 뽑아온다.)

RIGHT OUTER JOIN

  • left와 반대

FULL OUTER JOIN

  • A와 B 테이블의 합집합이 검색된다.

CROSS JOIN

  • 모든 경우의 수를 전부 표현해주는 방식
  • 두 테이블의 튜플 곱만큼 튜플이 나온다.

SELF JOIN

  • 자기 자신과의 조인
  • 자신이 가지고 있는 칼럼을 다양하게 활용할 때 사용한다.
  • ex ) 학생 테이블에서 어떤 학생과 같은 반의 학생들 조회

ANTI JOIN

  • where문에 서브 쿼리 넣어서 not in 혹은 not exists 사용

SEMI JOIN

  • 안티 조인과 반대로 서브쿼리 안에 존재하는 데이터를 메인쿼리에서 추출

SQL Injection


  • 해커에 의해 조작된 SQL 쿼리문이 그대로 DB에 전달돼 비정상적 명령을 실행시키는 공격 기법

공격방법

  1. 인증우회

    로그인 할 때 아이디 비번 + 해킹을 위한 SQL 입력

    ex)

    SELECT * FROM USER WHERE ID = "abc" AND PASSWORD = "1234"; DELETE * USER FROM ID = "1";
  1. 데이터 노출
    • 시스템에서 발생하는 에러메시지를 이용해 공격하는 기법
    • 악의적 구문을 삽입해 일부러 에러를 유발시키고, 이를 통해 DB의 구조를 유추한다.

방어방법

  • input 받을 때 특수문자 여부 검사학
  • SQL 서버 오류 발생시, 해당하는 에러 메시지 감추기
  • preparestatement 사용하기 (특수문자를 자동으로 escaping)

이상 현상


  1. 삽입이상

ex) 기본키가 StudentID + CourseID인 경우 course를 수강하지 않은 학생은 테이블에 데이터를 추가할 수 없음

  1. 갱신이상

    ex) 어떤 학생의 전공이 컴퓨터 → 음악으로 바뀌는 경우 학생id 속성값이 해당 학생인 모든 튜플의 값을 바꿔야 함

  2. 삭제 이상

    ex) 수강정보테이블에 studentID, department, courseID, Grade 정보가 있을 때 모든 학생이 수강 철회하면 StudentID, Department와 같은 학생의 정보도 함께 삭제됨

식별관계, 비식별관계


식별관계

  • 부모 테이블의 기본키 or 복합키가 자식테블의 기본키 or 복합키 의 구성원으로 전이되며 관계가 종속되는 것
  • B테이블에서 A테이블의 값을 참조하는 값은 A테이블 값이 없다면 홀로 의미를 가지지 못한다. (ex. 학생 - 수강, 유저-게시글)

비식별관계

  • 두 테이블이 종속관계가 아님
  • 부모는 자식의 부분적 정보만을 포함
profile
궁금한게 많은 사람🧐

0개의 댓글