[DB] 기본 개념(Key, Join, View, Partition, SQL Injection)

­Valentine·2021년 12월 29일
0

CS

목록 보기
9/23

CS공부 7일차. 오늘부터는 DB에 관해서 정리할 예정입니다.

  • 데이터베이스는 데이터의 독립성, 무결성, 보안, 중복 제외, 일관성 등을 보장해주는 장점이 있습니다. MySQL에서는 데이터베이스를 스키마라고 부릅니다.

Key

  • 후보키 : 기본키가 될수 있는 키들. 유일성과 최소성을 만족하며 하나의 키로 하나의 튜플을 인식할 수 있습니다.
  • 기본키(PK) : 유일성과 최소성을 만족하며 null값을 가지지 않고 중복되는 값이 없습니다.
  • 대체키 : 후보키들중 기본키를 제외한 나머지
  • 슈퍼키 : 유일성은 만족하지만 최소성을 만족하지 않는 키
  • 외래키 : 다른 릴레이션의 PK를 참조한 키

View

  • 데이터베이스에서 필요한 데이터만 보여주는 논리적 테이블로서 물리적으로 저장되지는 않습니다. 자신만의 index를 가질 수 없고 CRUD에 제약이 존재합니다. 이러한 특성때문에 보안측면에서도 활용됩니다.

Partition

  • 파티셔닝 : 테이블이 너무 커져서 분할하여 성능을 개선하는 기법입니다.
    • 장점 : CRUD가 빨라지고 파티션별로 백업을 할 수 있어 관리가 쉬워집니다.
    • 단점 : 조인 비용이 증가하고 전체 검색시에 시간이 더 소요됩니다.
    • 분할 기준 : 범위 분할, hash 분할, modulos 분할, composite 분할
    • 수평 분할(샤딩), 수직 분할

SQL Injection

  • 악의적으로 쿼리를 작성하여 데이터베이스 구조가 노출되거나 인증을 우회하는 사이버 공격입니다. 일반 사용자는 view로 접근하게 하고 특수문자를 필터링하는 방식으로 예방할 수 있습니다.

Join

  • 조인은 서로 다른 테이블들의 공통되는 칼럼을 이용하여 검색하는 기법입니다.
  • Inner Join : 교집합. 기준 테이블과 join 테이블에서 같은 값을 보여줍니다. 명시적 조인과 암시적 조인이 있습니다.
    • 명시적 조인
      SELECT * FROM A INNER JOIN B ON A.id=B.id;
    • 암시적 조인
      SELECT * FROM A,B WHERE A.id=B.id;
  • Cross Join : 기준테이블과 join 테이블의 칼럼을 곱한 값. 기준 테이블의 칼럼이 N개이고 join 테이블의 칼럼이 M개이면 N*M의 칼럼이 나옵니다.
    • 명시적 조인
      SELECT * FROM A CROSS JOIN B;
    • 암시적 조인
      SELECT * FROM A, B;
  • Left Outer Join : 기준 테이블의 칼럼은 모두 포함합니다.
    SELECT * FROM A LEFT OUTER JOIN B ON A.ID=B.ID;
  • Right Outer Join : join 테이블의 칼럼은 모두 포함합니다.
    SELECT * FROM A RIGHT OUTER JOIN B ON A.ID=B.ID;
  • Full Outer Join : 기준 테이블과 join 테이블의 칼럼을 모두 포함합니다. left outer join과 right outer join 에서 inner join을 뺀 값입니다.
    SELECT * FROM A FULL OUTER JOIN B ON A.ID=B.ID;
  • Self Join : 자기자신과 join한 값입니다.
    SELECT * FROM A temp1 JOIN A temp2 ON temp1.ID = temp2.ID;
profile
천체관측이 취미

0개의 댓글