더보기 - 참고한 강의
데이터 모델링 이란?
- 문제를 현실로부터 뜯어내서 고도의 추상화 과정을 통해 컴퓨터라는 새로운 현실로 옮긴것
데이터 모델링의 순서
- 업무파악
- 개념적 데이터 모델링
- 어떠한 개념들이 서로 어떻게 상호작용하는가 - 논리적 데이터 모델링
- 표로 만들기 (erd) - 물리적 데이터 모델링
- 어떤 걸 사용할 것인가
업무파악
- ui를 직접 같이 그려보기!
- 말의 기능을 불신하세요 : 내가 한 말을 상대가 바로 이해했을거라 믿지마세요
- 기획서 같이 만들어보기
- 기획자와 구현자가 서로 다를 경우 최소 데이터 모델링까지는 함께 해야함!
- 기획자와 구현자가 서로 다를 경우 최소 데이터 모델링까지는 함께 해야함!
<기획서 예시>
개념적 데이터 모델링 = Entity Relationship Diagram (ERD)
- 우리가 파악한 업무에서 개념을 뽑아내는 것
- 관계형 모델링 프로세스의 극치.... 혼자 할 수 없는게 정상임
: 물리적모델링까지 다 듣고 다시들어보기 ! 언젠가 되겠지.. 알게되겠지.. 란 마인드로 하기 - 개념적 데이터 모델링의 효용
- 현실에서 개념을 추출하는 일종의 필터
- 개념에 대해서 다른 사람과 대화하게 해주는 언어
- ERD : 현실을 3개의 관점으로 보라볼 수 있는 finder를 제공
- 정보 : 정보를 발견하고 다른 사람에게 표현할 수 있게 도움
- 그룹 : 서로 연관된 정보를 그루핑해서 인식하고 다른 사람에게 표현할 수 있게 함
- 관계 : 정보, 그룹사이의 관계를 인식하고 다른 사람에게 표현할 수 있게 함
- (추가) ERD로 만들고 나면 표로 만들기 쉬움
ERD를 만드는 방법
- 연관된 정보들을 묶어주는 큰 덩어리부터 끄집어 내기!
- 글 / 댓글 / 저자
- 왜 아래쪽 모델이 더 관계형 데이터 베이스 다운가?
- 표로만들면 이해하기 쉬움!
- 주제에 따라 데이터를 그루핑 가능 -> 컴퓨터의 자원을 아낄 수 있음.
- JOIN을 할 수 있음
🚩즉, 포함관계보다 평면적인 관계로 뽑아내는 것이 좀더 관계형 데이터베이스와 어울린다!!
ERD (개념적 모델링)의 구성요소 : 개념에 집중!
- Entity (그루핑된 것) => 글 / 저자 / 댓글 => Table
- Attribute (속성) => 본문 / 제목 / 날짜 => Column
- Relation (관계) => 저자 - [쓰다] - 글 - [소속] - 댓글 - [쓰다] - 저자 => PK / FK / Join
- Tuple => raw (행)
Entity
- 기획서에서 먼저 찾아보기!
- 연관된 내용을 그루핑하기
- ex) 쓰기 화면을 보면 엔티티가 드러남.
Attribute
- 각각의 엔티티의 속성 (원으로 표현)
- 글
- 제목 본문 날짜
- 저자
- 이름 자기소개 가입일
- 댓글
- 본문 작성일
- 글
Primary Key (식별자) 지정
- 엔티티에 있는 속성 중 하나를 식별자로 지정
- 원하는 대상을 정확히 타겟팅
- 그 대상을 제외한 누구도 같은 값은 안됨! ( ex . 주민등록번호 )
- PK = 기본 키
- 인조키
- 기본키가 될 항목이 없을 경우 임의의 식별자를 지정하여 넣어주는 것
- ex) user_id
- 중복키
- 키값 2개로 중복하여 식별하는 경우
- ex ) 직원번호 +부서번호 2개로 식별하는 경우
엔티티 간의 연결
- PK : 유일무이 식별자
- Foreign Key : 외래에 있는 테이블과 연결하는 열쇠 (외래키)
🚩relationship은 프라이머리 키와 외래키가 연결되는 걸 통해서 실제로 구현
- PK : 저자아이디 / 글아이디 / 댓글 아이디
- Relation : 작성 / 작성 / 소속
Cardinality : 특정 데이터 집합의 유니크한 값의 개수
- 까다로운거 맞음 ...^^ 쫄지말기..
- 관계성? 일대일 관계 / 일대다 관계 / 다대다 관계
- 일대일 관계
- 일대다 관계
- 다대다 관계
✔ 실제로 다대다 관계는 성립이 안되기 때문에 관계 테이블 하나를 추가하여 일대다 관계로 수정하여 사용
Optionality : 있을 수도 있고 없을 수도 있다
- Mandatory 와 Optional
- Optional
- Mandatory
ERD 완성
- 저자 vs 글
- 저자 는 글 이 필수가 아니다 (optional)
- 저자 는 글 을 여러개 가질 수 있다 (n)
- 글 은 저자 가 필수다 (Mandatory)
- 글 은 저자 를 여러개 가질 수 있다 (m)
- 저자 vs 댓글
- 저자 는 댓글 이 필수가 아니다 (optional)
- 저자 는 글 을 여러개 가질 수 있다 (n)
- 댓글 은 저자 가 필수다 (Mandatory)
- 댓글 은 저자 가 하나 뿐이다 (1)
- 글 vs 댓글
- 글은 댓글 이 필수가 아니다 (optional)
- 글 은 댓글을 여러개 가질 수 있다 (n)
- 댓글 은 글 이 필수다 (Mandatory)
- 댓글 은 글 이 하나 뿐이다 (1)
'😺Data Base > 😻 SQLD' 카테고리의 다른 글
[DB] Index (0) | 2022.09.17 |
---|---|
[RDBMS] 관계형 데이터 모델링 2 (0) | 2022.09.16 |
[DB] 트랜잭션 Transaction 이란? (0) | 2022.09.10 |
[SQL] 기초 SQL 문법 (0) | 2022.09.08 |
[DB] SQL 과 NoSQL (0) | 2022.09.08 |