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.