일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 머신러닝
- omtm
- 데이콘
- 딥러닝
- 인공지능
- Computer Vision
- OKR
- 데이터분석
- 그로스해킹
- 시각화
- 컴퓨터비전
- 데이터모델링
- fit
- dl
- 태블로
- product
- 언어지능딥러닝
- nlp
- pmf
- tableau
- 파인튜닝
- 자연어처리
- ERD
- productmarketfit
- 데이터시각화
- Market
- DACON
- 모델링
- Today
- Total
블로그
[DB] 데이터 모델링 실습 ERD 그리기 본문
11월 1~3일 사이에 사전 과제를 해야하는데
DAE가 현업에서 자주 마주하는 업무를 간소화한 데이터 모델링 문제와 쿼리(SQL) 테스트라는 거임...
그거 어떻게 하는건데...
그래서 ERD 실습 문제를 풀어보려고 합니다^^
이 분이 올려둔 문제 5개를 풀어보려고 한다
[DB] 데이터 모델링 - ERD 실습 문제
실습1. 학적과 수강신청 ▷ 학적과에는 각 과목을 강의하는 강사, 등록한 학생, 강의가 이루어지는 시간(여러개의 값) 및 장소 등의 데이터가 유지된다. ▷ 한 강사가 여러 개의 과목을 강의할 수
rang22.tistory.com
실습1. 학적과 수강신청
[ 업무 처리 규정 ]
|
우선 강사, 학생, 과목 엔티티가 필요해보인다.
각 엔티티 간의 관계는 다음과 같다.
1강사 : M과목
M과목 : N학생
그리고 과목과 학생 간에 학점이 부여된다고 하니까 학점을 저장할 엔티티도 필요할 것 같다
1과목 : M학점
1학생 : M학점
마지막으로 강의 시간과 장소를 저장할 엔티티가 필요할 것 같다
1과목 : M시간
왼쪽은 내가 그린 ERD, 오른쪽은 블로그 주인장님이 그리신 ERD
강의정보 테이블에 강의시간까지 복합키로 사용하는 건 생각못했다 !
아마 시간에 따라 강의실이 바뀔 수 있어서 저렇게 하신게 아닐까 싶은데 .. 나는 강의실은 고정이라고 생각해서 과목 엔티티 속성에 강의실을 넣어버렸다.
그리고 학점이 아니라 수강과목이라는 이름으로 엔티티를 만든 것도 배워야 될 것 같다
1번 문제를 푸니까 ERD 표기법하고 그리는 방법 좀 공부해야 할 것 같아서 아래 유튜브 영상을 봤다
간단한 예제로 실습해주시는데 한 번 보니까 그래도 어떻게 하는 건지 감이 잡히는 것 같기도 ...? 아닌 것 같기도.....
많이 연습해보라고 해서.. 많이 연습해봐야겠다고 생각했다면서...^^
>> 참고 유튜브
https://youtu.be/jsOPr3QfMW0?si=ONWaxxfb6k6kcj_x
>> ERD 그리는 사이트
Lucidchart | Diagramming Powered By Intelligence
See your work take shape Generate visuals automatically with AI and data imports, or build your own using intuitive diagramming tools.
www.lucidchart.com
11.01
실습2. 자동차 보험회사 고객관리
[ 업무 처리 규정 ]
|
우선 업무 처리 규정을 봤을 때
고객, 고객 분류, 승용차, 사고기록 엔티티가 필요할 것 같다
엔티티 관계는 다음과 같이 나타내봤다
M고객 - 1회사원
M고객 - 1자유업자
1고객 - M승용차
1승용차 - M사고기록
- super-sub 관계
- 부모의 속성 중에 더 작은 그룹으로 분리해서 관리할 필요가 있는 속성이 있으면 슈퍼타입 - 서브타입 단위로 모델링
- 직종으로 분류되는 회사원 / 자유업자는 배타적인 관계이므로 Exclusion 카테고리임
- I/E 표기법에서는 반원 모양안에 X를 그리는 것으로 표기함
- 자동차 보험회사이므로 모든 고객은 승용차를 한 개 이상 소유해야 함 => 표기 수정 필요
- 승용차 엔티티에 고객번호를 외래키로 주는 게 훨씬 간단함
- 식별관계(실선)
- 부모 테이블의 기본키 또는 유니크키를 자식 테이블이 자신의 기본키로 사용하는 것
- 반드시 부모 테이블에 데이터가 존재해야 자식 테이블에 데이터를 입력할 수 있음
- 비식별관계(점선)
- 부모 테이블의 기본키 또는 유니크키를 자신의 기본키로 사용하지 않고, 외래키로 사용하는 것
- 부모와의 의존성을 줄여 조금 더 자유로운 데이터 생성 및 수정이 가능함
>> 참고 블로그
데이터모델링 Barker(바커), IE 표기법
데이터 모델링 Keyword 개괄 모델링 주제영역 관계도 정의 ( 주제영역 : 동질성이 높은 데이터를 동일한 의미의 기준으로 분류한 것으로 업무 흐름이 있고 업무 기능이 존재한다. ) 개념 모델링 사
zaop.tistory.com
실습3. 어학원 강사정보
[ 강사정보 관리 ]
|
1) 강사정보 엔티티에 최대한 증복되는 속성들을 저장하고 내/외국 여부 속성을 두자
내국인, 외국인을 강사정보 엔티티의 서브 엔티티로 둬야할 듯
2) 학력사항, 경력사항은 한 명의 강사에 여러 개 값이 생길 수 있음
3) 강좌 엔티티 필요
강사정보, 학력사항, 경력사항, 내국인, 외국인, 강좌 엔티티가 필요하고 엔티티간 관계는 다음과 같다.
super강사정보 - sub내국인 / sub외국인
1강사정보 : M학력사항
1강사정보 : M경력사항
1강사정보 : M강좌정보
- 강사정보에 국적구분 안넣었네..
- 관리 정보에 나와있지 않은 부분까지 생각해야 할 듯
- 학력사항, 경력사항에 순번 추가
- 강좌가 비식별관계로 설정됨. 일단 강좌가 개설된 후 강사가 배정될 수 있기 때문
실습4. 자재 구매의뢰 업무
[ 업무 처리 내용 ]
[ 보충사항 ]
|
복잡해졌다 ...
일단 눈에 보이는 건 부서, 자재, 구매의뢰내역, 구매발주내역, 거래처 엔티티이다.
엔티티 관계를 생각해봤는데 넘 헷갈림
1부서 : M구매의뢰서
1구매의뢰서 : M자재
1구매의뢰서 : M구매발주서
1구매발주서 : 1거래처
1구매발주서 : M자재
일단 도전해봤는데 영 감을 못잡겠다 ㅠㅜㅠㅠ
- 이렇게 엔티티가 많아지고 관계가 복잡해지면, 단계별로 생각하면서 풀자
- 엔티티간의 관계를 해석해보기
- 엔티티 관계 정의서 작성
- 한 구매의뢰(발주)에 여러 종류의 자재가 포함될 수 있고, 한 자재가 여러 구매의뢰(발주)에 포함될 수 있으므로 N:M 관계로 표현하는게 맞을 것 같음
실습5. 회사 업무
[ 업무 처리 규정 ]
|
이 문제는 정답이 없어서 내가 알아서 잘 풀어야 한다 o<-<
아닌 것 같지만 일단 얼렁뚱땅 만들어봤다
진짜 마구잡이구만 ;;
관계정의서 다시 그려서 만들어봐야 할 것 같다
일단은 여기까지 문제를 다 풀어봤다... 풀어보긴 했다............., 에휴
암튼간에 오랜만에 ERD 그려서 재밌었고 연습이 진짜진짜진짜 많이 필요하다는 걸 느꼈다
어떤 엔티티가 있고, 엔티티간의 관계가 어떻게 되는지 관계정의서를 먼저 작성해보는게 중요하다는 걸 느꼈다..
그냥 눈으로만 보면 넘 복잡하고 감이 안잡힘 ㅠ
'공부' 카테고리의 다른 글
[그로스해킹] 지표 활용하기 (3) | 2024.12.06 |
---|---|
[그로스해킹] Revenue 쪼개보기 실습 excel (1) | 2024.12.06 |
[Programmers] 276035 - FrontEnd 개발자 찾기 SQL MySQL (4) | 2024.11.01 |
[Programmers] 131534 - 상품을 구매한 회원 비율 구하기 SQL MySQL (3) | 2024.10.31 |
[Programmers] 133027 - 주문량이 많은 아이스크림들 조회하기 SQL MySQL (3) | 2024.10.31 |