데이터베이스와 데이터베이스에서의 키(Key)

meek·2023년 6월 20일
0

TIL

목록 보기
19/24
post-thumbnail

데이터베이스란?

  • 웹 사이트 혹은 앱을 개발할 때는 데이터베이스를 사용하는 경우가 많다.

  • 커뮤니티 사이트를 개발한다고 하면 회원(User)정보, 게시글(Board) 정보 등을 저장할 공간이 필요하다.

  • 커뮤니티 사이트 웹 서버에서는 데이터베이스에 데이터 조회, 추가, 수정, 삭제 등을 통해 데이터 베이스 안에 있는 회원 정보, 게시글 정보 등을 요청할 수 있다.

DBMS

  • 데이터베이스 관리 시스템(DBMS)는 다수의 사용자가 데이터베이스에 존재하는 데이터에 접근할 수 있도록 해주는 소프트웨어이다.
  • Java 기반의 서버 프로그램에서는 JDBC를 이용해 MySQL에 접근 가능하다.

관계형 데이터베이스

  • 관계형 데이터베이스에서는 전체 데이터를 행(row)과 열(column)이 존재하는 하나 이상의 테이블(관계, relation)로 정의한다.
  • 여러 레코드(record)가 담긴 테이블을 관계(relation)으로 정의한다.
  • 관계(relation) = 테이블 : 같은 속성을 지닌 튜플(tuple) 모임
  • 관계형 데이터베이스 관리 시스템(RDBMS)의 예시 : Oracle, MySQL, MSSQL 등
  • 관계형 데이터베이스에서는 테이블에 따라서 데이터가 분리되어, 중복이 적다.
  • 관계형 데이터베이스에서는 두 테이블에 대해 특정 키(Key)를 기준으로 데이터를 조회할 수 있다.
  • 테이블을 분리하지 않고, 하나의 테이블만 이용한다면 데이터 중복이 발생할 수 있다.
    ex. 주문(Order) 정보와 고객(Customer) 정보를 하나의 테이블에 넣은 예시
    |고객 번호(customer_id)|고객 이름(customer_name)|고객 주소(customer_address)|주문 날짜(order_date)|상품 번호(product_id)|
    |:--:|:---:|:---:|:---:|:---:|
    |1|홍길동|서울|2012-12-25|235|
    |2|나동빈|경기|2012-05-05|751|
    |3|이순신|포항| | |
    |1
    |홍길동|서울|2012-01-01|551| *데이터 중복 발생
  • 관계형 데이터 베이스는 여러 개의 테이블로 구성된다.
  • 두 테이블에 대해 특정 키(key)를 기준으로 데이터를 조회할 수 있다.

테이블(Table)

  • 하나의 데이터베이스여러 개의 테이블을 가진다.
  • 하나의 테이블은 엑셀 시트와 유사한 형태를 보인다.
  • 테이블 내 각 데이터는 행(row)과 열(column)이 만나는 지점에 데이터가 들어간다.
  • 행(row) = 레코드(record) = 튜플(tuple)
  • 열(column) = 필드(field) = 속성(attribute)

테이블 및 컬럼 컨벤션

  • 테이블(table)의 이름은 단수형을 사용한다.
  • 이름을 붙일 때는 snake case를 사용한다. student, retired_employee
  • 테이블의 key는 {테이블 이름의 단수형}_id 형태를 쓴다 : student_id 혹은 단순히 id
  • 예시
    [student 테이블] // 이름은 단수형
    • 속성 1 : student_id
    • 속성 2 : name
    • 속성 3 : age
    • 속성 4 : grade // 정보들을 테이블에 넣어서 관리

    테이블 생성

  • 테이블을 정의할 때는 CREATE 명령어를 사용한다.
  CREATE TABLE '테이블 이름'
  (
      {컬럼명 1} {자료형 1},
      {컬럼명 2} {자료형 2},
      {컬럼명 3} {자료형 3},
      ...
  );

테이블 제약 조건(Constraint) - 기본

  • NOT NULL : NULL 값 비허용, 중복 허용
  • UNIQUE : NULL 값 허용, 중복 비허용
  • PRIMARY KEY : NULL 비허용, 중복 비허용, 테이블당 하나씩
  • DEFAULT : 해당 컬럼의 기본 값을 설정
  CREATE TABLE student
    (
        student_id INT PRIMARY KEY, // PRIMARY는 기본 키
        student_phone VARCHAR(20) UNIQUE,
        student_name VARCHAR(20) NOT NULL,
        student_address VARCHAR(20) DEFAULT 'seoul'
      );

테이블 제약 조건(Constraint) - 외래키

  • 테이블마다 기능을 분리하는 경우가 많다.
  • 특정한 학생(student)이 다른 강의(lecture)를 등록하는 상황을 고려해야 한다.
  • 이때 등록(registration) 테이블은 "학생 번호"와 "강의 번호"를 참조해야 한다.
  • 이러한 기능을 위해 외래키(foreign key) 가 제공된다.
  • 만약 [학생 테이블]에 없는 학생을 추가하려는 경우 오류가 발생한다.
  • 외래키는 하나의 테이블이 다른 테이블을 참조할 때 사용한다.
  • 학생(student) <- 등록(registration) -> 강의(lecture)
  CREATE TABLE registration
  (
      student_id INT,
      lecture_id INT,
      date DATETIME,
      FOREIGN KEY (student_id) REFERENCES student(student_id),
      FOREIGN KEY (student_id) REFERENCES lecture(lecture_id)
  );
profile
hello, world!

0개의 댓글