반응형
데이터 모델링
데이터 모델링 정의와 특징
- 현실 세계의 데이터를 약속된 표기법으로 표현하는 과정
- 추상화
- 현실 세계를 일정한 형식에 맞추어 표현하는 추상화의 의미를 가질 수 있다.
- 단순화
- 복잡한 현실을 제한된 언어나 표기법으로 이해하기 쉽게하는 단순화의 의미를 가진다.
- 정확화
- 모호함을 배제하고 누구나 이해가 가능하도록 정확하게 현상을 기술하는 정확화의 의미를 가진다.
데이터 모델링 유의점
- 중복
- 여러 장소의 데이터베이스에 같은 정보를 저장하지 않도록 하여 중복을 최소화한다.
- 비유연성
- 데이터의 정의를 데이터의 사용 프로세스와 분리
- 비일관성
- 데이터 간의 상호 연관관계를 명확하게 정의하여 일관성 있게 데이터가 유지되도록 한다.
데이터베이스 스키마 구조 3단계
- 외부 스키마
- View 단계는 여러 사용자 관점으로 구성
- 개념 스키마
- 통합된 모든 사용자의 관점
- 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현
- 모든 응용시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB를 기술한 것으로 DB에 저장되는 데이터와 그들 간의 관계를 표현
- 내부 스키마
- 물리적인 저장구조를 표현
- 논리적인 데이터 독립성을 고려하는 단계: 외부 단계, 개념적 단계
ERD
- 1976년 피터첸에 의해 ERM이라는 표기법이 만들어졌다.
- 일반적으로 ERD를 작성할 때 엔터티 도출 → 엔터티 배치 → 관계설정 → 관계명 기술의 흐름으로 작업을 진행한다.
- 관계의 명칭은 관계 표현에 있어서 매우 중요한 부분에 해당한다.
- 가장 중요한 엔터티를 왼쪽상단에 배치한다.
엔터티
엔터티 정의
- 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것
- 업무 활동상 지속적인 관심을 가지고 있어야 하는 대상으로서 그 대상들 간에 동질성을 지닌 인스턴스들이나 그들이 행하는 행위의 집합
- 인스턴스의 집합
- SQL에서 테이블
엔터티와 인스턴스
표기법
- IE 표기법
- Barker 표기법
엔터티의 분류
- 유무형에 따른 분류
- 유형 엔터티: 사원, 물품
- 개념 엔터티: 조직, 장소
- 사건 엔터티: 주문, 청구
- 발생 시점에 따른 엔터티 분류
- 기본, 키 엔터티: 사원, 부서
- 중심 엔터티: 접수, 계약
- 행위 엔터티: 주문내역, 계약진행
- 기타
- 스스로 생성될 수 있는지에 따라(독립엔터티, 의존엔터티)
엔터티 특징
- 엔터티는 다른 엔터티와의 관계가 있어야한다. 단, 통계성 엔터티나, 코드성 엔터티, 시스템 처리시 내부필요에 의한 엔터티 도출의 경우 관계를 생략할 수 있다.
- 유일한 식별자에 의해 식별이 가능해야한다.
- 엔터티는 업무 프로세스에 의해 이용되어야 한다.
- 엔터티는 반드시 속성을 포함해야된다.
- 관계엔터티 예외: 주식별자 속성만 갖고있어도 엔터티로 인정
- 속성이 없는 엔터티는 있을 수 없다. 반드시 속성을 가져야한다.
- 영속적으로 존재하는 인스턴스의 집합이어야한다. (한개가 아니라 두개이상 인스턴스 가져야한다. )
- 데이터로서 존재하지만 업무에서 필요로 하지 않으면 해당 업무의 엔터티로 성립될 수 없다. = 엔터티는 업무 프로세스에 의해 이용되어야 한다.
- 시스템 처리시 내부 필요에 의한 엔터티: 트랜잭션 로그 테이블 등
관계
- 1:1 관계
- 1:N 관계
- N:M 관계
식별자와 비식별자 관계
식별자 관계
- 강한 연결관계 표현
- 자식 주식별자의 구성에 포함됨
- 실선표현
- 연결 고려사항
- 반드시 부모 엔터티에 종속
- 자식 주식별자 구성에 부모 주식별자 포함 필요
- 상속받은 주식별자 속성을 타엔터티에 이전 필요
비식별자 관계
- 약한 연결관계 표현
- 자식 일반 속성에 포함됨
- 점선표현
- 연결 고려사항
- 약한 종속관계
- 자식 주식별자 구성을 독립적으로 구성
- 자식 주식별자 구성에 부모 주식별자 부분 필요
- 상속받은 주식별자 속성을 타 엔터티에 차단 필요
- 부모쪽의 관계참여자 선택관계
식별자
대표성 여부에 따라
- 주식별자
- 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결할 수 있는 식별자
- 대표성을 가지며, 엔터티 내의 여러 인스턴스 중 하나를 유일하게 구분할 수 있는 식별자
- 보조식별자
- 엔터티 내에서 각 어커런스를 구할 수 있는 구분자이나 대표성을 가지지 못해 참조 관계 연결을 못함
- 주식별자
스스로 생성 여부
- 내부 식별자
- 엔터티 내부에서 스스로 만들어지는 식별자
- 외부 식별자
- 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자
- 타 엔터티로부터 상속되어 정의된 식별자
- 내부 식별자
속성의 수
- 단일 식별자
- 하나의 속성으로 구성된 식별자
- 복합 식별자
- 둘 이상의 속성으로 구성된 식별자
- 단일 식별자
대체 여부
- 본질 식별자
- 업무에 의해 만들어지는 식별자
- 엔터티 내의 집합을 명확하게 설명할 수 있는 업무적으로 의미가 부여된 식별자
- 인조 식별자
- 업무적으로 만들어지지는 않지만 원조 식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만들어진 식별자
- 본질 식별자
속성
속성 정의
- 더이상 쪼개지지 않는 최소 데이터 단위
- 등록일시는 일-시-분으로 구분할수있지만 직접적인 관련이 있어서 합쳐서 사용가능
- 하지만 이름과 주소를 합쳐 사용할 수는 없음
속성의 특징
- 시스템을 구축하려는 회사 업무 프로세스에 필요한 정보로 구성
- 유일한 식별자에 함수적 종속성을 가져야 한다.
- 하나의 속성은 하나의 속성값만을 가진다. 하나의 속성에 여러 속성값이 들어간다면 별도의 엔터티를 이용해서 분리하는 게 좋다. (혹은 1차 정규화 진행)
속성의 분류
- 속성의 특성에 따른 분류
- 기본 속성
- 업무 분석을 통해 바로 정의한 속성
- 사원 이름, 직책 이름, 고용일자 등
- 설계 속성
- 원래 업무상 존재하지는 않지만 설계를 하면서 도출해 내는 속성
- 업무상 필요한 데이터 외에 데이터 모델링을 위해, 업무를 규칙화 하기위해 속성을 새로 만들거나 변형하여 정의하는 속성
- 파생속성
- 다른속성으로부터 계산이나 변형이 되어 생성되는 속성
- 다른 속성에 영향을 받아 발생하는 속성, 계산된 값들이 여기에 해당.
- 다른 속성에 영향을 받으므로, 영향받는 속성을 알아두어야 하는 등 유의할점이 많아서 가급적 적게 정의하는것이 좋음.
- 데이터를 조회할 때 빠른 성능을 낼 수 있도록 하기위해 원래 속성의 값을 계산하여 저장할 수 있도록 만든 속성
- 기본 속성
- 엔터티 구성 방식에 따른 분류
- 주키 속성 PK: 엔터티를 식별할 수 있는 속성
- 외래키 속성 FK: 다른 엔터티와의 관계에서 포함된 속성
한 엔터티가 다른 엔터티의 PK를 참조하는 것이 FK. FK는 해당 엔터티에서도 PK가 될 수 있다.
(식별/비식별 관계 참고) - 일반 속성: 둘 다 아닌 속성
도메인
- 각 속성이 가질 수 있는 값의 범위데이터 모델링
반응형
'Programming > Database' 카테고리의 다른 글
mysql phpmyadmin 접속에러 : mysqli::real_connect(): (HY000/1045): Access denied for user 'pma'@'localhost' (using password: NO) (4) | 2021.08.29 |
---|---|
PHP/Mysql 호스팅서버에서 한글깨짐 (0) | 2021.08.24 |
mysql php 연결 오류 (0) | 2021.08.23 |