01. 데이터베이스 설계
데이터 모델링은 관계 DBMS 세계에서 가장 어렵고 가장 중요한 업무 중 하나입니다. 데이터 모델링을 잘못하면 조직체의 응용은 사용자의 요구를 만족시키지 못할 수 있으며, 신뢰할 수 없고, 데이터베이스에 쓸모없는 데이터를 채우게 됩니다. 매우 단순한 상황을 제외하고는 모델이 완전한 지식을 전달할 것으로 기대해서는 안되지만 훌륭한 모델은 실세계 상황을 합리적으로 이해할 수 있게 합니다. 한 조직체에 가용한 모든 상세한 데이터를 모델에 기록하는 것은 불가능하며, 바람직하지도 않습니다.
데이터베이스 설계는 미리 정의된 응용들의 모임을 위해서 조직체의 사용자들의 정보 요구를 수용하여 하나 이상의 데이터베이스의 논리적인 구조와 물리적인 구조를 설계하는 것입니다. 서로 충돌되는 요구들을 조정하고, 좋은 구조를 갖는 데이터베이스를 구축하며, 응답 시간과 저장 공간 등의 처리 요구사항을 만족시키도록 합니다. 하나의 데이터베이스는 실세계의 어떤 측면(작은 세계)을 나타내며, 작은 세계에서 일어나는 변화는 데이터베이스에 반영됩니다.
데이터베이스 설계에는 개념적 데이터베이스 설계와 물리적 데이터베이스 설계가 있습니다.
개념적 데이터베이스 설계에서는 개념적인 구조를 다루고, 물리적 데이터베이스 설계에서는 물리적인 저장 장치와 접근 방식을 다룹니다. 개념적인 데이터베이스 설계는 요구사항 분석 단계 후에 수행되는데, 저장될 데이터에 대한 고수준의 기술(description)을 산출합니다. 개념적 데이터베이스 설계는 실제로 데이터베이스를 어떻게 구현할 것인가와는 독립적으로 정보 사용의 모델을 개발하는 과정입니다. 개념적 데이터베이스 설계 과정에서 조직체(실세계)의 엔티티, 관계, 프로세스, 무결성 제약조건 등을 나타내는 추상화 모델을 구축합니다. 엔티티는 서로 구분이 되면서 조직체에서 데이터베이스에 나타내려는 객체(사람, 장소, 사물 등)를 의미합니다. 관계는 두 개 이상의 엔티티들 간의 연관을 나타냅니다. 프로세스는 관련된 활동을 나타내고 무결성 제약조건은 데이터의 정확성과 비즈니스 규칙을 의미합니다. 데이터베이스는 이런 측면들을 모두 결합하여, 논리적으로 연관된 데이터를 저장합니다. 개념적 설계의 최종 산출물은 물리적인 구현을 고려하지 않는 한 조직체의 개념적 스키마입니다.
개념적 데이터베이스 설계를 수행하는 이유는 비즈니스를 좀 더 잘 이해하기 위해서, 최종 사용자와 의사소통을 가능하게 하기 위해서, 설계상의 실수를 초기에 발견하기 위해서, 튼튼한 기초를 구축하기 위해서, 데이터베이스의 품질을 보장하기 위해서, DBMS와 독립적인 데이터베이스 설계를 위해서 등입니다.
개념적 수준의 모델들은 특정 데이터 모델과 독립적으로 응용 세계를 모델링할 수 있도록 합니다. 이들은 모델링되고 있는 환경, 사용자의 필요성, 정보 요구사항들이 변경됨에 따라 데이터베이스의 구조가 진화할 수 있도록 허용하는 편리한 메커니즘입니다. 개념적 모델들은 데이터베이스 구조나 스키마를 하향식으로 개발할 수 있기 위한 틀(framework)을 제공합니다. 인기 있는 개념적 모델은 엔티티-관계(ER:Entity-Relationship) 모델입니다. 개념적 모델들은 조직의 데이터를 고수준의 추상적 뷰로 나타냅니다. 이런 모델들은 컴퓨터에서 데이터를 표현하거나 검색하는 것은 거의 고려하지 않습니다.
ER 모델과 같은 개념적 데이터 모델이 사상될 수 있는 다수의 구현 데이터 모델(implementation data model)이 존재합니다. 구현 단계에서 사용되는 세 가지 데이터 모델은 관계 데이터 모델, 계층 데이터 모델, 네트워크 데이터 모델입니다. 이 세 가지 모델은 관계뿐만 아니라 엔티티와 애트리뷰트들을 표현하기 위한 기능들을 제공합니다. 엔티티와 이들의 애트리뷰트는 세 가지 모델에서 유사하게 다뤄집니다. 레코드의 구조가 다소 다를 수 있지만 애트리뷰트 값들의 모임(엔티티의 식별자를 포함)인 레코드로 엔티티가 표현됩니다. 그러나 관계는 세 가지 모델에서 매우 다르게 표현됩니다.
02. 데이터베이스 설계의 개요
데이터베이스 설계는 한 조직체의 운영과 목적을 지원하기 위해 데이터베이스를 생성하는 과정입니다. 주요 목적은 모든 주요 응용과 사용자들이 요구하는 데이터, 데이터 간의 관계를 표현하는 것입니다. 데이터베이스 설계는 일반적인 프로젝트 라이프 사이클 과정을 따릅니다. 데이터베이스 설계의 기본적인 원칙은 요구사항에 반드시 충실해야 한다는 것입니다.
훌륭한 데이터베이스 설계는 관심의 대상이 되는 실세계를 잘 나타내는 것입니다. 시간의 흐름에 따른 데이터의 모든 측면을 나타내고, 데이터 항목의 중복을 최소화하고, 데이터베이스에 대한 효율적인 접근을 제공하고, 데이터베이스의 무결성을 제공하고, 깔끔하고 일관성이 있고, 이해하기 쉬워야 합니다.
데이터베이스 설계 과정 | |||
단계 | 기능 | 질문 | |
요구사항 분석 단계 | |||
요구사항 수집과 분석 | |||
설계 단계 | |||
개념적 설계 | ER 모델링 또는 객체 지향 모델 | 어떤 엔티티와 관계들이 요구되는가? |
|
DBMS의 선정 | 어떤 DBMS가 적절한가? | ||
논리적 설계 | 개념적 설계를 데이터베이스 스키마로 사상 |
데이터베이스가 무엇을 모델링하는가? |
|
스키마 정제 | 중복을 제거함 - 데이터베이스 스키마의 정규화 |
가장 단순한 스키마는? | |
물리적 설계 | 성능상의 문제를 고려하여 인덱스등을 정의 |
어떤 성능을 원하는가? | |
보안 설계 | 사용자들의 그룹과 접근 제한 | 어떤 수준을 보안을 원하는가? | |
구현 단계 | |||
데이터베이스의 구축과 튜닝 | |||
데이터를 적재하거나 변환 | |||
기존의 응용 변환 |
① 요구사항 수집과 분석
작은 세계는 데이터베이스에 표현하려는 실세계의 한 부분(도메인)입니다. 데이터베이스 설계자가 설계를 진행하려는 작은 세계의 전문가가 아닐 수 있기 때문에 요구사항 분석 및 수집 단계가 매우 중요합니다. 요구사항 수집과 분석 단계에서는 요구사항을 수집하고, 의견들을 평가하고 조정합니다. 자연어로 기술된 요구사항은 모호함을 제거하기 위해서 재작성합니다. 모든 요구사항이 표현되었는지 확인합니다.
② 개념적 설계
개념적 설계 단계는 모든 물리적인 사항과 독립적으로, 한 조직체에서 사용되는 정보의 모델을 구축하는 과정입니다. 사용자들의 요구사항 명세로부터 개념적 스키마가 만들어집니다. 개념적 설계 단계의 결과물은 논리적 설계 단계의 입력으로 사용됩니다.
③ DBMS 선정
여러 가지 요인들을 검토한 후 DBMS를 선정합니다. 기술적인 요인은 DBMS가 제공하는 데이터 모델, 저장 구조, 인터페이스, 질의어, 도구, 제공되는 서비스 등입니다. 정치적인 요인에는 고수준의 전략적인 결정 등이 있습니다. 경제적인 요인에는 DBMS 구입 비용, 하드웨어 구입 비용, 유지 보수(서비스) 비용, 기존의 시스템을 새로운 DBMS에 맞게 변환하는 데 소요되는 비용, 인건비, 교육비 등이 있습니다.
④ 논리적 설계
논리적 설계에서는 데이터베이스 관리를 위해 선택한 DBMS의 데이터 모델을 사용하여 논리적 스키마(외무 스키마도 포함)를 생성합니다. 개념적 스키마에 알고리즘을 적용하여 논리적 스키마를 생성합니다. 논리적 스키마를 나타내기 위해 관계 데이터 모델을 사용하는 경우에는 ER 모델로 표현된 개념적 스키마를 관계 데이터베이스 스키마로 사상합니다.
⑤ 정규화
ER 스키마를 관계 데이터베이스 스키마로 자동적으로 사상하면 가장 좋은 관계 데이터베이스 스키마가 생성되지는 않습니다. 훌륭한 데이터베이스 설계를 보장하기 위해서는 ER스키마를 변환해서 얻은 관계 스키마를 분석하여 더 정제하는 과정을 거쳐야 합니다. 관계 데이터베이스 스키마를 더 좋은 관계 데이터베이스 스키마로 변환하기 위해서 정규화 과정을 적용합니다. 정규화 과정에서는 관계 스키마에 중복과 갱신 이상이 발생하는지 검사합니다.
⑥ 물리적 설계
물리적 설계에서는 처리 요구사항들을 만족시키기 위해 저장 구조와 인덱스 등을 결정합니다. 물리적 설계에 영향을 미치는 요인으로는 트랜잭션들의 예상 수행 빈도, 트랜잭션들의 시간 제약조건 등이 있습니다. 초기에 개략적으로 인덱스를 선정하고, DBMS를 사용하면서 요구사항이 만족되는가를 테스트합니다. 성능을 향상시키기 위해서 튜닝을 수행합니다.
⑦ 트랜잭션 설계
요구사항 수집과 분석 후에 데이터베이스 설계 과정과 별도로 트랜잭션 설계를 진행할 수 있습니다. 트랜잭션은 완성될 데이터베이스에서 동작할 응용 프로그램입니다. 데이터베이스 스키마는 트랜잭션에서 요구하는 모든 정보를 포함해야 합니다. 트랜잭션들의 상대적인 중요성과 예상 수행 빈도 등이 성능상의 튜닝에 중요합니다. 검색, 갱신, 혼합 등 세 가지 유형으로 구분하여 입력과 출력, 동작 등을 식별합니다.
데이터베이스 설계 과정을 요약하자면 성공적인 데이터베이스 설계는 처음에 개략적인 수준에서 시작하여 점차 상세한 수준을 나타내는 반복적인 방식에 의존합니다. 각 수준에서 적절한 데이터 모델을 사용하여 중요한 측면에 집중해야 합니다. 데이터베이스 설계의 최종 결과는 중요한 설계 결정이 문서화된, 완전히 동작하는 데이터베이스입니다.
[IT 공부하기/데이터베이스] - ER모델에 대해 알고계신가요? (1)
ER모델에 대해 알고계신가요? (1)
01. ER모델 ER모델은 데이터베이스 설계를 용이하게 하기 위해서 P.P. Chen이 1976년에 제안하였습니다. 이 모델을 제안하게 된 주요 동기는 의미적으로 풍부한 데이터 모델을 제공하고, 개념들을 그
soonirism.tistory.com
'💕IT 공부하기 > 데이터베이스' 카테고리의 다른 글
ER모델에 대해 알고계신가요? (2) (0) | 2022.09.02 |
---|---|
ER모델에 대해 알고계신가요? (1) (0) | 2022.09.01 |
트리거(trigger)와 주장(assertion) 그리고 내포된 SQL (0) | 2022.08.30 |
SQL의 데이터베이스 갱신의 세가지 명령어 (0) | 2022.08.29 |
SQL의 SELECT문에 대하여(3) (0) | 2022.08.27 |