데이터베이스 객체

banjjoknim·2021년 2월 27일
0

25강. 데이터베이스 객체

데이터베이스 객체의 종류와 관리하는 방법에 대해서 알아본다.

  • 처음 RDBMS 소프트웨어를 설치하면 데이터베이스는 비어있는 상태이다.
  • 여기에 테이블이나 뷰, 인덱스, 프로시저 등의 데이터베이스 객체를 작성해 데이터베이스를 구축한다.

1. 데이터베이스 객체

  • 데이터베이스 객체란 테이블이나 뷰, 인덱스 등 데이터베이스 내에 정의하는 모든 것을 일컫는 말이다.
  • 데이터베이스 내의 객체라는 의미로 데이터베이스 객체라고 부르는 것이다(C++이나 자바에서 사용하는 객체지향 프로그래밍의 '객체'와 다르다).
  • 객체는 데이터베이스 내에 실체를 가지는 어떤 것을 말한다.
  • 객체의 종류에 따라 데이터베이스에 저장되는 내용도 달라진다.
  • 테이블의 경우 행과 열이 저장된다.
  • 한편 SELECTINSERT 등은 클라이언트에서 객체를 조작하는 SQL 명령인데, 데이터베이스 내에 존재하는 것이 아니므로 객체라 부를 수 없다.
  • 객체는 이름을 가지며, 데이터베이스 내에서 객체를 작성할 때는 이름이 겹치지 않도록 해야 한다.
  • 객체 이외에도 테이블의 열 또한 이름을 가지며 그 밖에 SELECT 명령에서 열에 별명을 붙일 수도 있다.
  • 다만 열이나 별명은 객체가 아니다. 한 가지 동일한 점은 이름을 붙일 때 임의의 규칙에 맞게 지정해야 한다는 사실이다.

이름을 붙일 때는 다음과 같은 제약 사항(명명규칙)을 따른다.

  • 기존 이름이나 예약어와 중복하지 않는다.

  • 숫자로 시작할 수 없다.

  • 언더스코어(_) 이외의 기호는 사용할 수 없다.

  • 한글을 사용할 때는 더블쿼트(MySQL에서는 백쿼트)로 둘러싼다.

  • 시스템이 허용하는 길이를 초과하지 않는다.

  • 객체의 이름은 꽤 중요하다. 어떤 데이터가 저장되어 있는지 파악하는 기준이 되는 경우가 많으므로 의미 없는 번호 등으로 이름을 붙이지 않도록 해야 한다.

  • 한편 이름은 객체의 종류와는 관계없다는 것에 주의해야 한다.

  • 예를 들어 foo라는 이름의 테이블을 한번 만들면, 같은 종류의 테이블은 물론이고 뷰와 같은 다른 종류의 객체 역시 똑같은 이름으로 작성할 수 없다.

의미없는 이름을 붙이지 않도록 한다!

2. 스키마

  • 데이터베이스 객체는 스키마라는 그릇 안에 만들어진다.
  • 따라서 객체의 이름이 같아도 스키마가 서로 다르면 상관없다.
  • 이와 같은 특징 때문에 데이터베이스 객체는 스키마 객체라 불리기도 한다.
  • 실제로 데이터베이스에 테이블을 작성해서 구축해나가는 작업을 스키마 설계라고 부른다.
  • 이때 스키마는 SQL 명령의 DDL을 이용하여 정의한다.
  • 어떤 것이 스키마가 되는지는 데이터베이스 제품에 따라 달라진다.
  • MySQL에서는 CREATE DATABASE 명령으로 작성한 데이터베이스가 스키마가 된다.
  • 한편 Oracle 등에서는 데이터베이스와 데이터베이스 사용자가 계층적 스키마가 된다.
  • 테이블과 스키마는 무엇인가를 담는 그릇 역할을 한다는 점에서 비슷하다.
  • 테이블 안에는 열을 정의할 수 있고 스키마 안에는 테이블을 정의할 수 있다.
  • 각각의 그릇 안에서는 중복하지 않도록 이름을 지정한다.
  • 이처럼 이름이 충돌하지 않도록 기능하는 그릇을 네임스페이스(namespace)라고 부르기도 한다.
스키마나 테이블은 네임스페이스이기도 하다!

profile
꿈꾸는 개발자

0개의 댓글