Post

OracleSQL 핵심정리5 - 데이터베이스 설계와 DDL

데이터베이스 설계

데이터베이스 설계 단계

  • 요구 조건 분석 : 개념적 설계 - 논리적 설게 - 물리적 설계 - 구현
  • 요구 조건 분석 : 사용자가 원하는 데이터베이스의 용도를 파악하는 단계
  • 개념적 설계 : 사용자의 요구사항을 이해하기 쉬운 형식으로 간단히 기술하는 단계
  • 논리적 설계 : 개념적 설계에서 만들어진 구조를 목적 데이터베이스에 맞도록 스키마를 설계하는 단계. 트랜잭션 인터페이스를 설계하고 정규화 과정을 거침
  • 물리적 설계 : DBMS에서 관리되는 데이터베이스의 물리적인 구조와 접근 방법 등을 설계하는 단계
  • 구현 : 목적 DBMS의 DDL로 기술된 명령어를 실행하여 데이터베이스를 생성

요구 조건 분석

  • 요구사항들을 모으고 시스템 개발의 목표와 방향성을 기준으로 해당 업무에 대해 철저히 분석
  • 기본적인 업무에 대한 지식을 바탕으로 업무 프로세스 파악에 초점을 두고 분석
  • 업무 분석을 위해 필요한 많은 문서들을 활용해야함
  • 업무 담당자와 인터뷰를 통해 요구조건을 분석

개념적 설계

  • 요구 조건 분석 단계에서 나온 요구사항 정의서를 기반으로 모델링
  • ERD와 그림같은 객체 데이터 모델로 표현. DBMS에 독립적이고 고차원적인 표현 기법으로 기술
  • ERD라는 수단을 통하여 개발자와 분석자가 의사소통을 하기 때문에 ERD가 현실세계를 잘 반영해야함
  • ENTITY : 데이터베이스에 자료로 표현하려는 것. 타입, 집합, 인스턴스 단위
  • ATTRIBUTE : 여러개의 속성으로 하나의 엔티티를 구성하며 각 속성은 엔티티의 특성, 상태 등을 기술
  • RELATION : 엔티티와 속성 혹은 엔티티 간의 연관성
  • 유도속성 : 속성의 값이 다른 속성이나 엔티티가 가지고 있는 값으로부터 유도되어 결정되는 속성
  • 주 식별자 : 엔티티를 유일하게 식별해줄 식별자
  • 관계 : 1:1, 1:N, N:M 관계가 있음

논리적 설계

  • ER스키마를 관계 데이터 모델의 릴레이션으로 사상해야 함
  • 외래 식별자 : 부모 엔티티의 주 식별자 속성이 자식 엔티티에도 공통적으로 존재하면 외래 식별자가 됨

물리적설계

  • 개발에 사용할 데이터베이스를 선정하여 특정 데이터베이스로 구현 될 수 있도록 구체적으로 설계하는 것
  • 논리적 설계의 산출물인 ERD의 요소들을 관계형 데이터베이스의 요소들로 전환
  • 용어사전 정의 및 테이블 기술서 제작

DDL(Data Definition Language)

데이터베이스 설계 후 데이터베이스의 구조를 정의하는 명령어

CREATE TABLE

  • 테이블 생성 명령문
  • CREATE TABLE 테이블명 ( COLUMN DATATYPE [DEFAULT expression] [column_constraint clause]...);
  • desc 테이블명; 으로 테이블 생성확인 및 컬럼 유형 확인

ALTER TABLE

  • 테이블 구조 변경 명령문
  • ALTER TABLE 테이블명 ADD (COLUMN DATATYPE [DEFAULT EXPR]...) - 테이블 컬럼 추가
  • ALTER TABLE 테이블명 MODIFY (COLUMN DATATYPE[DEFAULT EXPR]...) - 테이블 컬럼타입 변경
  • ALTER TABLE 테이블명 DROP COLUMN 컬럼명; - 테이블 컬럼 제거
  • ALTER TABLE 테이블명 SET UNUSED (COLUMN); - 제거되지는 않지만 SELECT 문으로 표시되지 않음

RENAME

  • 테이블을 포함한 객체의 이름을 변경하는 DDL 명령문
  • ALTER TABLE 테이블명 RENAME TO 변경할테이블명

DROP TABLE

  • 테이블 제거 명령문(참조테이블부터 삭제해야 함)
  • DROP TABLE 테이블명

데이터 딕셔너리

  • 사용자와 데이터베이스 자원을 효율적으로 관리하기 위환 다양한 정보를 저장하는 시스템
  • USER_ 데이터 딕셔너리 - 자신이 생성한 테이블, 인덱스, 뷰 동의어 등의 객체나 사용자의 권한 정보를 제공
    • SELECT TABLE 테이블명 FROM USER_원하는정보;
  • ALL_ 데이터 딕셔너리 - 사용자가 접근할 수 있는 모든 객체에 대한 정보를 조회 가능
    • SELECT OWNER, TABLE_NAME FROM ALL_TABLES;
  • DBA_ 데이터 딕셔너리 - 시스템 관리와 관련된 뷰(DBA나 시스템 권한을 가진 사용자만 접근가능)
    • SELECT OWNER, TABLE_NAME FROM DBA_TABLES;
This post is licensed under CC BY 4.0 by the author.