지금부터 여러분은 학습관리 시스템 LMS를 만들어야 하는 웹개발자 입니다. 그럼 가장 먼저 무엇을 시작해야 할까요?
바로 홈페이지를 구성하고 자바를 활용해 코드를 짜고 하는것은 불가능 하겠죠. 웹 사이트 개발이 성공적으로 마무리 되려면 사전에 DB의 설계가 잘 되어있어야 합니다. 그렇다면 DB를 잘 설계하기 위한 데이터 모델링에 대해 알아보겠습니다.
1. 데이터 모델링이란?
데이터 모델링이란 시스템을 구축하는데 있어 업무 내용을 분석하고 분석된 결과를 약속된 표기법에 의해 표현하는 것을 말합니다. 특히 데이터를 추상화함으로써 데이터베이스의 골격을 이해하고 그 이해를 바탕으로 SQL문장을 기능과 성능적인 측면에서 효율적으로 작성하기 위해 꼭 알아야 하는 핵심요소입니다. 이러한 데이터 모델링은 웹사이트를 제작하는 개발자 혼자서 설계할수는 없습니다. 반드시 시스템 구축을 의뢰한 클라이언트와 협의하에 설계가 이루어져야합니다.
2. 데이터 모델링의 특징
1. 단순화(Simplification)
- 현실을 단순화하여 핵심 요소에 집중하고 불필요한 세부 사항을 제거
- 단순화를 통해 복잡한 현실 세계를 이해하고 표현하기 쉬워지도록 함
2. 추상화(Abstraction)
- 현실세계를 일정한 형식에 맞춰 간략하고 대략적으로 표현하는 과정
- 다양한 현상을 약속된 표기법에 따라 표현
3. 명확화(Clarity)
- 대상에 대한 현상을 정확하게 기술하는 것으로 애매모호함을 최대한 제거
- 명확화를 통해 모델을 이해하는 이들의 의사소통이 원활해짐
3. 데이터 모델링의 유의점
1. 중복(Duplication)
- 한 테이블 또는 여러 테이블에 같은 정보를 저장하지 않도록 설계
2. 비유연성(Inflexibility)
- 사소한 업무 변화에 대해서도 잦은 모델 변경이 일어나지 않도록 주의
- 데이터 정의를 프로세스와 분리
3. 비일관성(Inconsistency)
- 데이터베이스 내의 정보가 모순되거나 상반된 내용을 갖는 상태를 의미
- 데이터간 상호연관 관계를 명확히 정의
- 데이터 품질관리 필요
- 데이터의 중복이 없더라도 비일관성은 발생할 수 있음
4. 데이터 모델링 3 가지 요소
- 대상(Entity) : 업무가 관리하고자 하는 대상(객체)
- 속성(Attribute) : 대상들이 갖는 속성(하나의 특징으로 정의될 수 있는 것)
- 관계(Relationship) : 대상들의 관계
대상(Entity)은 어떤 것(Thing)으로도 불리며 학생, 과목, 수강신청 등과 같이 현실 세계에서 독립적으로 식별 가능한 객체나 사물로써 업무상 분석해야 하는 대상들로 이루어진 집합입니다. 속성(Attribute)은 업무에서 필요로 하는 고유한 성질, 특징을 의미하며 컬럼으로 표현할 수 있는 단위입니다. 관계(Relationship)는 위에서 말한 속성들을 가진 대상들간의 관계를 말합니다. 각각의 특징들을 좀 더 자세히 보면 다음과 같습니다.
엔터티(Entity)의 특징
1. 유일한 식별자에 의해 식별이 가능
- 인스턴스(객체)가 식별자에 의해 한 개씩만 존재하는 지 검증 필요
- 유일한 식별자는 그 엔터티의 인스턴스만의 고유 이름
- ex) 이름은 동명이인이 있을 수 있으므로 학번이 고유 식별자가 될 수 있음
2. 해당 업무에 필요하고 관리하고자 하는 정보
- 설계하는 업무의 시스템 구축에 필요한 정보여야 함
- ex) 학사시스템 구축 시에는 학생 정보가 필요. 인사관리, 물류관리 등 다른 업무엔 학생 정보 불필요
3. 인스턴스들의 집합
- 영속적으로 존재하는 2개 이상의 인스턴스의 집합
- 인스턴스가 한 개 밖에 없는 엔터티는 집합이 아니므로 성립이 안됨
- ex) 학생이라는 엔터티에 학번은 a001, 이름은 김철수인 학생과 학번이 b001, 이름은 김유리인 2개의 인스턴스 필요
4. 엔터티는 반드시 속성을 가짐
- 하나의 인스턴스는 각각의 속성들에 대한 1개의 속성 값만을 가짐
- 각 엔터티는 반드시 2개 이상의 속성을 가짐
- ex) 학생 엔터티는 학번, 이름, 전화번호 등 2개 이상의 속성(Attribute)이 필수적
5. 엔터티는 업무 프로세스에 의해 이용
- 업무적으로 필요하여 선정했지만 실제 사용되지 않는다면 잘못 설계된 것
- 사용되지 않는 고립 엔터티는 제거 필요
6. 다른 엔터티와 1개 이상의 관계 성립
- 엔터티는업무적 연관성을 갖고 다른 엔터티와 연관의 의미를 가짐
- 관계가 없는 엔터티 도출은 부적절한 엔터티이거나 적절한 관계를 찾지 못한것
속성(Attribute)의 특징
- 해당 업무에 반드시 필요하고 관리하고자 하는 정보여야 함
- 하나의 속성은 한개의 값만을 가짐
- 하나의 속성에 여러개의 값이 있는 다중값일 경우 별도의 엔터티를 이용하여 분리
- 하나의 인스턴스는 속성마다 반드시 하나의 속성값만을 가짐(원자성)
관계(Releationship)의 특징
- 관계명은 관계의 이름을 의미하며 애매한 동사는 피하고 현재형으로 표현
- ex) 학생과 수강과목이라는 엔터티에서 학생이 해당 과목을 신청을 하면 "수강신청"이라는 관계 형성
- 관계차수는 두 개의 엔터티간 관계에서 참여자의 수를 표현한 것
- ex) 한명의 학생이 여러개의 수강과목 신청이 가능하고 수강과목 또한 여러명의 학생이 신청 가능하므로 두 개의 엔터티는 N:M(다대다)의 관계를 가지며 1:1, 1:N과 같은 관계가 존재
- 엔턴티의 관계에 있어 필수참여인지 선택참여인지 구분
- ex) 학생은 동아리에 대해서는 참여해도 되고 참여하지 않아도 됨
5. 데이터 모델링의 3단계
마지막으로 데이터 모델링의 세 가지 단계입니다. 개념적 모델링, 논리적 모델링, 물리적 모델링이 있습니다.
개념적 모델링은 업무 중심적이고 포괄적인 수준의 모델링으로 추상화 수준이 가장 높습니다. 업무를 분석한 뒤 업무의 분석을 마친 후 핵심 엔터티를 추출하는 단계입니다. 도출된 핵심 엔터티들과의 관계들을 표현하기 위해 ERD를 작성합니다.
논리적 모델링은 개념적 모델링의 결과를 토대로 세부속성, 식별자, 관계 등을 표현하는 단계이며 데이터 구조를 정하기 때문에 비슷한 업무나 프로젝트에서 동일한 형태의 데이터를 사용한다면 재사용이 가능합니다. 재사용성이 높은 논리적 모델은 유지보수가 용의하며 데이터 정규화를 수행하는 단계입니다.
물리적 모델링은 논리 모델링이 끝난 후 이를 직접 물리적으로 생성하는 과정입니다. 데이터베이스 성능, 디스크 저장구조, 하드웨어의 보안성, 가용성 등을 고려해야 하며 가장 구체적인 데이터 모델링입니다.
'DB' 카테고리의 다른 글
[DB] 예시와 함께 보는 SQL 날짜 함수 총 정리! (0) | 2024.06.09 |
---|---|
[DB] 예시와 함께 보는 SQL 숫자 함수 총 정리! (2) | 2024.06.08 |
[DB] 예시와 함께 보는 SQL 문자 함수 총 정리! (0) | 2024.06.07 |
[DB] 트랜잭션, 비전공자도 한방에 이해시켜버림! (0) | 2024.06.06 |
[DB] 정규화 이것보다는 쉽게 설명 못합니다! (0) | 2024.06.05 |