본문 바로가기

프로그래밍/Java

DA# DB모델링

728x90
반응형

DB 모델링 툴 : DA# Modeler

 

64bit 설치 가이드

우선은 설치하실때 [관리자 모드로 실행]을 선택하시고 설치하시기 바랍니다.
그리고 설치 후 설치 디렉토리 내에 있는 modeler.exe designer.exe등 exe확장자를 가진 파일들을 [관리자 모드로 실행]을 최소 한번 이상은 해 주시기 바랍니다 그리고 사용해 보시기 바랍니다.
64비트 운영체제지만 32비트환경 프로그램이라서 관련된 오라클툴이라든지 관련된 툴이 32가 설치되어 있어야 사용 가능 합니다.

http://dataware.kr/solution/?_filter=search&mid=solution_tech&search_target=title_content&category=&search_keyword=64

 

DATAWARE™

 

dataware.kr

본질식별자

  • 내용(의미) 상의 진정한 식별자
  • 누가 + 무엇을 + 언제
  • 직접종속이면서 절대종속인 것
  • 특별한 하자가 없다면 이것이 곧 실질식별자

실질실별자 - 인조식별자,얼굴마담 = 주식별자(PK)

  • 최종 확정된 공식적인 식별자
  • 본질식별자의 전부나 일부를 인조 속성으로 치환하여 실질식별자를 생성할 수 있음
  • 관계를 통해 상속되는 식별자

참고 : http://blog.naver.com/dkftkxkd9/220759946620

 

진행 프로세스

  • 논리적 설계 -> 물리적 설계 -> 개발팀 설계 리뷰 -> 인덱스 설계 -> 디비 모델링 검수 -> 테이블 생성 스크립트 작성 -> 쿼리 검수 

DB 설계시 고려사항

  • 데이터 분산 정책
  • 데이터 삭제 정책
  • 트래픽 분산 고려

Identity / NonOdentity

Identity : 부모키가 자식테이블의 주키로 전이된다. 자식 테이블은 구분자로 사용될 추가 키를 가져야 한다.

  • 강한 관계(종속관계)를 나타낸다. 부모가 없이 자식은 있을 수 없다.
  • 자식 객체가 부모객체에 종속되며 자식을 필터링 해서 읽을 일(자식의 크기가 크지않다.)이 없다.
  • 즉 자식이 로드되면 전량 로드된다. 자식은 독립적으로 로드될 수 없다.
  • @CollectionOfElements로 매핑하며 타겟은 @Embeded가 된다.
  • ex) 장바구니 객체의 자식인 ITEM 객체.

NonIdentity : 부모기가 자식 테이블의 FK로 전이된다. 자식테이블의 주키는 부모키와 상관없다.

  • 약한 관계를 나타낸다.
  • 자식 객체가 필터링 되어 부분만(페이징 처리) 읽어야 할 수 있다.
  • 부모와 별도로 자식이 로드 가능하다.
  • @OneToMany로 매핑된다. 타겟은 부모와 동등한 @Entity이다.

셋팅

보기 > 식별자 상속 처리

Tip

1. 테이블 간의 거리가 멀어서 연결하기 힘들때 복제

  • 테이블 우클릭 "복제본 생성하기" 하면 복제 테이블이 생기고 [복제] 라고 표기됨.

2. 외부 도메인 테이블

  • 테이블 우클릭 "실체유형" > "External" 선택하면 [외부] 라고 표기됨

3. 부모 테이블의 PK를 상속받을때 속성으로 받기

  • 삼바리에서 작대기 없는 걸로 연결(1:N NonIdentity)

4. 부모 테이블의 PK가 아닌 다른 키를 상속 받고 싶을때

  • 부모 테이블 우클릭 "식별자그룹(대체키)" 정의 후 관계선 연결 시 "식별자 선택" 에서 사용가능 식별자 선택

5. auto_increment 칼럼을 두번째 식별자로 사용 방법

  • MySQL에서는 PK, UK 선두 컬럼인 경우 autoincrement 가 생성됨
  • 따라서, PK는 POI아이디+리뷰아이디로 두고, 별도로 리뷰아이디에 UK를 설정하시면 리뷰아이디에 오토값 생성됨.

CREATE TABLE `PoiReview` (

 `poiId` bigint(20) NOT NULL COMMENT 'REFERENCES Poi(poiId)',

 `reviewId` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'REVIEW_ID',

 `content` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '코멘트 입력값',

 `code` varchar(50) CHARACTER SET utf8mb4 NOT NULL COMMENT 'REFERENCE BIZCOMMON.CommonCode(code) 코드',

 `isDisplay` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'Y' COMMENT '표출여부',

 `isReport` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'N' COMMENT '신고여부',

 `createDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일시',

 `updateDate` datetime DEFAULT NULL COMMENT '수정일시',

 `writeCmn` varchar(15) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '작성자 Cmn',

 PRIMARY KEY (`poiId`,`reviewId`),

 UNIQUE KEY `idx_PoiReview_reviewId` (`reviewId`)

) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

디비모델링 검수전 체크 사항

1. 논리모델에서 실체명이나 속명명에 영문이 들어가면 안됨. 실체명이나 필드에 공백이 들어가면 안됨.

ex)

  • 도로명알리아스 (X) ->  도로명별칭 (O)
  • 생성자ID (X) -> 생성자아이디 (O)
  • 좋아요 건수 (X) -> 좋아요건수 (O)

2. 코드 필드는 Subtype 표현식으로 어떤 값들이 있는지 명시

 

3. Not Null 필드는 명시적으로 설정 체크

4. 스트링 필드는 varchar(1000) 이상부터 text로 취급되므로 과도하게 크게 잡지 않음

256이나 512 단위를 추천

5. 부모 자식 관계에서 자식은 부모의 PK를 상속받아 선두 PK로 설정함

728x90
반응형