[ DB & SQL(RDBMS, NoSQL) ] 데이터 베이스 공부 : 데이터 모델링 개념 & ERD 다이어그램 작성_01

0

DB & SQL

목록 보기
5/12
post-thumbnail

[ DB & SQL(RDBMS, NoSQL) ] 데이터 베이스 공부 : 데이터 모델링 개념 & ERD 다이어그램 작성_01

목차

1. 데이터 모델링이란?
    1.1 데이터 모델링 순서 절차
         1.1.1 : 1. 업무 파악 (요구사항 수집 및 분석 )
         1.1.2 : 2. 개념적 데이터 모델링.
         1.1.3 : 3. 논리적 데이터 모델링.
         1.1.4 : 4. 물리적 데이터 모델링.
   1.2 데이터 모델링 절차 정리
   
   

Ⅰ. 데이터 모델링 이란?

"데이터 모델링"이란, 정보시스템 구축의 대상이 되는
'업무 내용을 분석하여 이해하고 약속된 표기법에 의해 표현`하는걸 의미합니다.

그리고 이렇게 분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터 관리에 사용합니다.

특히 "데이터를 추상화한 데이터 모델"은 데이터베이스의 골격을 이해하고,
그 이해를 바탕으로 SQL 문장을 기능과 성능적인 측면에서 효율적으로 작성할 수 있기 때문에,
'데이터 모델링'은 데이터베이스 설계의 '핵심과정' 이라고 볼 수 있습니다.

Ⅰ.1. 데이터 모델링 순서 절차

Ⅰ.1.1 업무 파악( 요구 사항 수집 및 분석 )

업무 파악은 어떠한 업무를 시작하기 전에 '해당하는 업무에 대해서 파악'하는 단계 입니다

모델링에 앞서 가장 먼저 해야 할 것은
어떠한 업무를 데이터화하여 모델링 할 것인지에 대한 요구사항 수집일 것 입니다.
업무파악을 하기 좋은 방법으로는 UI를 클라이언트 측과 함께 확인해 나아가는 것 입니다.
궁극적으로 만들어야 하는 것이 무엇인지 심도있게 알아봐야 합니다.

Ⅰ.1.2. 개념적 데이터 모델링.

'개념적 데이터 모델링'은 내가 하고자 하는 업무/작업에 사용되는
"데이터 간의 관계를 구상"하는 단계입니다.
각 개체들과 그들간의 관계를 발견하고 표현하기 위해 ERD 다이어그램을 생성합니다.

다음은 '피터 첸 표기법'으로 ERD 다이어그램을 구성한 그림입니다.
== 도형(기호)이 의미하는 바를 알고 화살표를 관계를 표현해주면 됩니다.

ex) 게시판을 만든다면

Ⅰ.1.3. 논리적 데이터 모델링.

개념적인 데이터 모델이 완성되면, "업무 중심으로 좀 더 구체화된 데이터 모델을" 만들어 내는데,
이것을 "논리적인 데이터 모델링"이라고 합니다.

이 단계에서 업무에 대한 [ Key, 속성, 관계 ] 등을 표시하며, 정규화 활동을 수행합니다.

"정규화"데이터 모델의 일관성을 확보하고 중복을 제거하여,
신뢰성있는 데이터 구조를 얻는데 목적이 있습니다.

개념적-모델링 단계에서 피터 첸 표기법으로 구현한 개념적 ERD 다이어그램을
"정보 공학 표기법"인 '테이블 형태'로 재구성합니다.

이때 단순히 추상적인 데이터에서 보다 구체화 된 데이터로 작성합니다.

ex) 회원정보의 아이디, 비밀번호에 각 데이터 타입을 명시해 주고 데이터간의 관계를 정밀하게 맺어주며 테이블의 키(key)를 저장해줍니다.

Ⅰ.1.4. 물리적 데이터 모델링.

"물리적 데이터 모델링"은 최종적으로 데이터를 관리할 "데이터-베이스를 선택"하고,
선택한 데이터베이스에 실제 테이블을 만드는 작업을 말합니다.

시각적인 구조를 만들었으면 그것을 실제로 SQL 코딩을 통해 완성하는 단계입니다.

/* 테이블 생성 */

-- 회원정보
create table member_tbl ( 
  member_uid bigint primary key auto_increment,
  member_name varchar(45) unique not null,
  member_pwd varchar(45) not null,
  member_status boolean not null
);

-- 로그인기록정보
create table login_info_tbl( 
  member_name varchar(45) not null,
  info_ip varchar(45) not null,
  info_date datetime not null,
  constraint fk_member_name foreign key (member_name) references member_tbl (member_name)
);

-- 게시판
create table board_tbl ( 
  board_uid bigint primary key auto_increment,
  member_name varchar(45) not null,
  board_title varchar(45) not null,
  board_date datetime not null,
  board_hit int not null,
  board_post varchar(5000) not null,
  constraint fk_member_name foreign key(member_name) references member_tbl(member_name)
);

-- 게시판 풀텍스트 인덱스 생성
create Fulltext index idx_title on board_tbl ( board_title );
create Fulltext index idx_post on board_tbl ( board_post );
-- show index from board_tbl ;

-- 댓글
create table reply_tbl ( 
  reply_uid bigint primary key auto_increment,
  board_uid bigint not null,
  member_name varchar(45) not null,
  reply_date datetime not null,
  reply_post varchar(1000) not null,
  foreign key(board_uid) references board_tbl(board_uid),
  foreign key(member_name) references member_tbl(member_name)
);

-- 댓글 풀텍스트 인덱스 생성
create Fulltext index idx_reply on reply_tbl ( reply_post );

Ⅰ.2. 데이터 모델링 절차 정리

@위에서 말한 절차를 정리하면,

① 네이버 게시판의 화면에 어떠한 것들이 필요한지에 대한 개념을 설정
: "업무파악 단계(요구사항 수집 및 분석 )"

② 네이버 게시판의 화면에 표현되는 데이터들을 파악해서 관계를 설정
: "개념적 데이터 모델링"

③ 개념적 데이터 모델링 작업을 한 것을 표로 만들기
: "논리적 데이터 모델링"

④ 이 일련의 과정을 수행한 것을, 실제 데이터베이스 테이블로 만들기.
: "물리적 데이터 모델링"

0개의 댓글

관련 채용 정보