[RDB] RDBMS

Seongho·2022년 10월 5일
0

RDB

목록 보기
2/6

관계형 데이터베이스

relation(table)의 모임으로 데이터를 저장하는 시스템

  • relation : 2차원 테이블
  • tuple : 테이블의 행. record라고도 부름
  • attribute : 테이블의 칼럼
  • degree : attribute의 수
  • cardinality : tuple의 수

몇가지 규칙

  • NULL은 0도 아니고 Empty space도 아니다. NULL 그 자체.
  • relation 이름은 고유해야 한다.
  • tuple의 순서는 중요하지 않다.
  • 한 테이블에 같은 attribute 있으면 안되며, attribute의 순서는 중요하지 않다.

Keys

  • super key : tuple을 유일하게 식별할 수 있는 attribute나 attribute의 집합.
  • candidate key : tuple을 유일하게 식별할 수 있는 attribute. 즉, primary key가 될 수 있는 attribute
  • primary key : candidate key들 중 하나. 밑줄로 표시한다.
  • partial key : Weak Entity의 tuple을 유일하게 식별할 수 있는 key로, Regular Entity의 PK와 결합되어 복합 키(compound key)가 된다.
  • alterate key : primary key를 제외한 나머지 candidate key
  • foreign key : 두 relation 사이 관계를 만들기 위한 key
    ++ 1. 다른 테이블 attribute 참조

    ++ 2. 나의 테이블 다른 attribute 참조

    ++ 3. primary key들의 복합키

Integrity constraints

데이터베이스의 정확성, 일관성을 보장하기 위해 저장, 삭제, 수정 등을 제약하기 위한 조건

  • Entity integrity constraint : primary key에 관련된 제약조건
    => 모든 relation은 꼭 PK가 있어야 한다.
    => PK는 value가 unique한 attribute여야 한다.
    => PK의 value는 NULL이 아니어야 한다.
  • Domain integrity constraint : attribute의 value에 관련된 제약조건
    => attribute의 Domain(Data type)은 꼭 선언되어야 한다.
    => 각 tuple에 한 attribute에는 하나의 값만 들어가야 한다.
  • Referential integrity constraint : foreign key에 관련된 제약조건
    => relation A가 B를 참조한다면, A에서 B의 모든 데이터를 접근할 수 있어야 한다.

SQL

Structured Query Language

데이터베이스에 접근하고 관리하는 언어.

  • DDL (Data Definition Language) : 데이터베이스를 정의하는 언어.
    => CREATE / ALTER / DROP / TRUNCATE
  • DML (Data Manipulation Language) : 데이터를 조작하는 언어.
    => SELECT / INSERT / UPDATE / DELETE

참고사항 DELETE / TRUNCATE / DROP 의 차이


++DELETE는 원하는 데이터만 삭제할 수 있고, 삭제 후 되돌릴 수 있다. 또한, 데이터는 지워지지만 테이블 용량은 줄어들지 않는다. (디스크 상의 할당 공간을 유지)
++truncate는 모든 데이터를 삭제해 테이블 생성 초기로 돌아가고, 삭제 후 되돌릴 수 없다.

DDL

  • 데이터베이스 생성
    CREATE DATABASE 데이터베이스 이름;
    ex) create database testDB;
  • 데이터베이스 삭제
    DROP DATABASE 데이터베이스 이름;
    ex) drop database testDB;
  • 디폴트 스키마 설정
    USE 데이터베이스 이름;
    ex) use testDB;
  • 테이블 생성
  • 테이블 삭제
    DROP TABLE 테이블이름;
    ex) drop table testDB;
  • 테이블 데이터만 삭제
    TRUNCATE TABLE 테이블이름;
    truncate table testDB;
  • 테이블 열 추가
    ALTER TABLE 테이블이름 ADD 열 이름 데이터타입;
    ex) alter table testDB add name varchar(45);
  • 테이블 열 삭제
    ALTER TABLE 테이블이름 DROP COLUMN 열 이름;
    ex) alter table testDB drop column name;
  • 테이블 열 이름 변경
    ALTER TABLE 테이블이름 CHANGE 이전이름 새이름 데이터타입;
    ex) alter table testDB change name studentname varchar(45);
  • 테이블 열 정보 수정
    ALTER TABLE 테이블이름 MODIFY COLUMN 열 이름 데이터타입;
    alter table testDB modify column name varchar(45);

constraint

constraint는 테이블의 데이터를 특정하는 것

  • NOT NULL : 해당 attribute에 NULL value가 들어가는 것을 허용하지 않는다
  • PRIMARY KEY(PK) : 각 tuple을 유일하게 구분할 수 있는 attribute에 지정한다.
  • UNIQUE : 중복되면 안되는 데이터에(주민등록번호, 군번...) 부여한다. PK와 차이점은 PK는 테이블에서 유일한 attribute여야 하고, NULL이 허용되지 않지만, UNIQUE는 테이블에 여러 attribute에 부여해도 되고 NULL이 허용된다.
  • FOREIGN KEY(FK) : 두 개의 relation 사이의 관계를 만들어준다. 참조하는 relation을 child relation이라 하고 참조되는 relation을 parent relation이라 한다.
    ++FK의 유형
    1) FK가 다른 relation의 PK를 참조한다.
    2) FK가 자신 relation의 PK를 참조한다.
    3) FK가 복합 키(PK처럼 사용됨)를 참조한다.
  • DEFAULT : attribute에 디폴트 value를 지정하기 위해 사용된다. tuple이 삽입될 때, 어떤 value가 없으면 default value가 삽입된다.

  • CHECK : 해당 attribute에 삽입되는 value의 범위를 지정한다. 입력되는 값이 CHECK의 조건과 맞지 않으면 에러가 발생한다.


    ++ CONSTRAINT 제약조건 이름 ==> 이 부분은 해당 제약조건의 이름을 지정하는 것으로, 오류가 났을 때, 제약조건 이름이 출력될 때, 제약조건을 구분하기 편하기 위해 하는 것인데, 필수로 작성할 사항은 아니다.
profile
Record What I Learned

0개의 댓글