DB Chap01-1. 모델링 개요
모델링
: 현실 세계를 단순화 시켜 표현하는 기법
엔티티
: 업무의 관심 대상이 되는 정보를 지님 또는 정보를 관리한 필요가 있는 유형, 무형, 입출고 관련 이력, 거래명세서같은 문서, 색상 코드 등
속성
: 엔티티에서 관리해야 할 최소 단위 정보 항목(관심이 있는 항목),
하나 이상의 속성을 포함한다.(학번이나 이름 같은 기본 속성, 다른 값들로 부터 가져올 수 있는 정보인 포인트 적립 같은 유도 속성, 외래키 같은 설계 속성 등)
인스턴스
: 엔티티의 속성으로 실제로 구현되는 하나의 값
- 엔티티 + 속성 =>클래스
- new 로 생성된 인스턴스
앤티티의 조건
- 업무의 관심 대상이 되는 사물일 것
- 두 개 이상의 인스턴스
- 필요한 속성
속성의 명명규칙
- 속성의 의미 명시
- 해당 업무에서 사용하는 명칭 부여
- 서술식(수식어, 소유격)x, 약어x
- 엔티티에서 유일하게 식별 가능하도록 지정할 것(중복 비허용
ERD (Entity Relationship Diagram)
- 개체 관계도
- 요구분석 사항에서 얻어낸 엔티티와 속성들을 그림으로 그 관계를 도출한 것
주식별자 (Primary Identifeier)
- 엔티티에 소속된 인스턴스들을 구별하는 기준 역할을 하는 속성
- 중복x ( 유일성)
- 복합 키일 경우 하나의 주식별자만으로 구분이 가능할 때 굳이 여러 개를 갖지 않게 할 것(최소성)(복합키)
- 값 지정 후 변경하지 말 것(불변성) 예를 들어 학번같은 거 변경하지 않아야 함
- 게시판 번호가 1~10번이 있을 경우 3번을 지운다 해서 1~9로 당겨지지 않음(불변성)
- not null과 관련된 특징. 주식별자에 값이 없을 수 없음(존재성)
- 엔티티의 속성 중 주식별자 속성이 없다면 새로운 속성을 꼭 생성해야함(인위적 주식별자)회원번호나 부서코드 같은 것
외래식별자 (Foreign Identifier)
- 관계가 있는 두 엔티티를 부모, 자식 엔티티로 구분한 후 부모의 주식별자와 공통 속성이 자식에게도 존재하면 해당 속성을
외래식별자로 지정
- 자식 엔티티에 부모 엔티티 주식별자 공통 속성이 없으면 자식에게 속성을 추가 후 외래식별자로 지정
ERD표기법 (관계)
- 상호 관꼐가 있는 두 엔티티 중에 어느 쪽의 정보가 먼저 생성 되는가에 따라 경정
- 자식 엔티티는 부모 엔티티의 정보가 있어야만 존재 가능
참여도
- 필수, 선택(존재 할 수도 아니어도 되는 것) 두 가지로 존재
- 어떤 기준이 되는 엔티티와 반드시 대응되는 엔티티가 존재한다면 필수, 선택이 결정됨
카디널리티
- 두 개의 엔티티 간 관계에서 엔티티에 속해 있는 인스턴스들을 수적으로 표현한 것
- 인스턴스가 1개와 대응된다면 '|' ,
다수와 대응된다면
식별 관계(Identifying Realationship)
- 1:n 관계에서 외래 식별자가 자식 엔티티의 주식별자의 일부가 되는 관계
- PFK로 표시(외래 식별자가 주식별자의 역할도 한다.)
- 실선으로 관계를 표시
비식별 관계(Non-Identifying Relationship)
- 1:n 관계에서 외래 식별자가 자식 엔티티의 주식별자 역할을 하지 못하고 단순히 속성으로 추가되는 관계
- FK로 표시 (단지 외래식별자의 역할만 함)
- 점선으로 관계 표시
학생별취미-학생
처음에는 비-식별관계로 설정해야 쉬움
학생들 취미라는 엔티티의 값을 한 행 씩 실제로 넣는다고 생각해보기
바둑이라는 취미에 홍길동이라는 학생, 김말동이라는 학생이 추가가 될 때 바둑이 주식별자 역할을 하나요?
바둑 하나에 벌써 학생 둘이 들어와 버리면 주식별자의 역할을 못하는 게 파악됨. 그럼 이때 식별관계로 바꾸면 됨
이렇게 두개가 세트로 묶이면 주식별자 역할을 잘 하도록 처리됨
사원정보- 부서정보
비-식별관계로 먼저 처리해보기
홍길동 사원이 여러 부서에 속할 수 없으므로 한 사원은 하나의 부서에 속해있음
그래서 굳이 사원번호와 부서코드를 묶어서 처리하지 않아도 됨
비-식별관계로 둬도 무방한 경우
[자바/DataBase] DB (Chap02-3. ERD(개체 관계도)(2))
1:1 관계
- 굳이 엔티티를 나눌 필요 없어서 하나의 엔티티로 합칠 수 있음
1:N 관계
- 제일 많이 사용
M : N 관계
- erdcloud에서 불가능
1번에서 부모, 자식 관계 잘 모르겠을 때는 2번을 먼저 해보기
[자바/DataBase] DB (Chap02-4. Entity 도출 실습문제(3))
실습1
사원이 여러 명인 경우 날짜가 한 행을 일일히 구분 불가능함
날짜와 사번이 묶이면 주식별자의 역할을 잘 할것
실습2
- 어떤 고객이 상담 전화를 할 때 마다 일련변호가 계속 부여함
- 한 상담에 한 고객만 담당하니까 그 주식별자의 역할을 잃지 않음
- 부모,자식관계? 상담일지지가 반품요청일 경우 반품목록에 값이 insert되니까 상담일지가 부모
- 참여도는? 상담내용이 반품요청일 때 반품목록에 값이 들어가지만 만약 수리요청일 경우 반품목록에는 값이 들어가지 않음 ->선택
- 반품목록에는 식별자가 없는 상태니까 식별관계로 해야함
- 문제에서 수리요청인 경우에 대한 내용이 업무 기술서에는 잘 나타나지 않았지만 실제로는 수리 목록이라는 엔티티가 있을 수 있다.
- 이 경우 상담시 반품을 요청하면 수리목록에는 null값이 들어가고, 수리를 요청하면 반품목록에 null값이 들어감
- 그랬을 경우 이렇게 분리해두는 게 좋다(아크관계 차후 내용 추가 참고)
실습3
강사가 잠시 일을 쉬게 되면 수업을 안 할 수도 있겠죠
그 경우 비-식별로 설정해두고
한 과정을 한 강사가 수업을 하니까 주식별자 역할을 잃지 않겠죠
그래서 비식별 관계로 유지할께요
단, 한 과정에는 여러 명의 학생들이 있으니 과정은 주식별자 역할을 잃으니까 식별관계로 연결
난이도 상
실습4
1:n관계
한 물품은 한 제조회사에서 생산되니까 주식별자(비-식별관계) 유지됨
고객이 있어야 고객별물품이 있으니까 고객이 부모
고객이 물품을 안 살 수도 있으니까 선택으로 비-식별관계
어떤 날은 아침에 살 수도 있고 저녁에 살 수도 있는데 그런 경우 구입날짜는 주식별자 역할을 잃을 것
그러면 이 관계를 식별관계로 둠
그런데 구입날짜랑 고객번호를 묶어도 주식별자 역할을 못함
(예를 들어3월 1일에 1번 고객이 뭘 샀는데 저녁에 또 뭘 샀을 경우 주식별자 역할을 못한다는 말)
그러면 그냥 두고
고객별구입물품과 물품을 연결해볼게요
물품이 있어야 고객
구입물품이 있으니 물품이 부모가 됨
실습5
'DB' 카테고리의 다른 글
DB가 뭘까 (0) | 2023.01.22 |
---|---|
DB 3-7/4-1/4-2/4-3/4-4/5-1 (0) | 2023.01.19 |
DB3-1~3-4 (0) | 2023.01.15 |