회사 가서
Q. 이 페이지에 맞는 데이터베이스 모델링을 해달라. 라고 한다면?
icoda 보고 테이블 정의하기
테이블 이름 event 정하고
- 속성들 뭐로 들어갈지 정하기
이 중에 1조가 가장 잘했다고 하심
//
DMBS에서 가장 많은 비율 : RDBMS (관계), 이밖에도 있는데 그냥 이게 압도적
- '관계'를 가지고 DB를 관리하는 것
무결성 : 중복 제거 방식으로 - '뷰'라는게 있는데 -> 집중화(쪼갬)해서 '테이블'
사용할 때는 테이블 합쳐서 사용
테이블 -> 합쳐서 (뷰) -> 파일
테이블 저장하고 있는 기준은
- 객체지향에서는 '상속'
- RDBMS에서는 '관계'
관계...라는게 참 애매하다.
- 관계는 행위
주어(테이블) ------ 동사(행위/관계) ----- 목적어 (테이블)
ex) 회원(테이블)이 게시글(테이블)을 등록하다.(관계/행위)
우리가 해야할 첫 번째는
1) 주어 찾기 (= 주체 찾기, 행위자/역할자 찾기)
역할은 업무적인 것.
그래서 주어는 사람의 수와 같은게 아님.
ex) 서울 병원은 수납이라는 같은 일을 하는 사람이 사람이 여러명
-> 쇼핑몰에서의 주어는 누구일까.
역할자가 DB에 등록되어야 하는지 판단해야
-> 회원, 관리자, 판매자 O
비회원 X
2. 목적어 찾기 (동사는 '등록하다'로)
ex) 회원이 등록하는 대상 (~을/~를 에 해당하는 것)
장바구니를 등록하다?
-> 장바구니는 등록하는게 아님
'장바구니의' 생상인지/크기인지....
등록하는게 아니라 '담는 것'
관심상품을 등록하다?
- 회원이 관심을 가질 수는 있지만 등록할 수는 없음
- 앞에 행위를 붙여줌으로서 명사를 만들어주면 안된다...
관심상품 -> 상품.
상품을 등록하는건 회원이 할 내용이 아니니 X
//
역할자 찾기
대상 찾기 (행위는 '등록하다')
- 합성어, 행위자 빼기
DB 설계는 3단계로 구분된다.
1. 개념 설계
- Concept 잡는 것
역할자 - 관리자 (주어)
행위/관계 - 등록하다. (그림으로 그릴 때는 마름모로 표현)
대상 - 공지사항
네모들 : entity
즉, entity와 관계만 있는 것 (ERD이라고 표현 - Entity Relation Diagram)
2. 논리 설계
- 명사/키워드 (key가 되는 entity)
그 사이 행위/관계가 '등록' 말고 다른 것도 되는지 찾아보기
ex) [판매자]가 [상품]을 [ ] 하다.
그 다음 명사/키워드도 바꿔보기
ex) 수정하다, 삭제하다.
- 위의 그림처럼 하나의 대상을 두고 역할자 별로 행위를 할 수 있는 관계 찾기
구매, 결제같은게 빠져있음ㅋㅋㅋ
*행위/관계*
1) 업무적으로 다루는 내용인지 확인
2) 행위는 데이터를 '추가하는 행위'만 다루기
ex) 수정, 삭제가 애매....
'위키피디아'의 경우 수정된 것도 다 저장이 됨 (누가, 언제, 무엇이 수정되었는지)
이건 '행위'로 간주
- 행위/관계는 DB에 등록되는 것만을! 대상으로 함
ex) '등록'은 누적하는거니까 행위. (수정은 의미가 없다!)
Q. 삭제는.... (만약 회사에서 "우리는 삭제 내역 쌓는다" 하면 행위/관계가 맞음)
'조회'도 쌓인다면 DB에 관계로 표시를 해야하지만 그렇지 않으면 관계 X
Q. 관계로서 살아남는건?
ex) 구매 - 구매 내역이 누적되는거니까
찜 - 이것도 맞다. 누적됨 (지황님은 아니라고 함. DATA를 별도의! 저장소를 이용하는 경우)
- 하나의 데이터를 별도의 파일이나 저장소를 이용하는 경우는 DB 관계에서 제외됨
DB를 사용하지 않고 다른 저장소를 선택하는 기준이 있을까?
-> '임시 데이터'는 임시 저장소를 사용
조작(수정,삭제,등록) 과 같은 조작을 수반하지 않고, 읽기 전용 데이터를 기록하는 경우
임시 데이터로 넣을지?
로그인 전에 찜하면 데이터 날라감. 근데 로그인 후에 찜하면 ... 사용자 데이터로 있어야?
ex) 평가 - 관계!
ex) 판매자가 상품 등록, 관리자도 상품을 등록할 수 있게 한다면 ..
.... 네가 등록했어도 내가 고칠거야 (관리자의 신적 영영) ..
놓침... ㅠ
.
.
다시 그림 고치는 중
회원 --------------- 구매 --------------- 상품
3. 물리 설계
-
60일차. DB 13 - 모델링 (논리설계 실습) (1) | 2021.05.14 |
---|---|
59일차. DB 12 - 모델링 (개념설계 실습) (0) | 2021.05.13 |
57일차. DB 11 - VIEW, SELF JOIN, 서브 쿼리로 간단하게 표현하기 (0) | 2021.05.11 |
56일차. DB 10 - JOIN (0) | 2021.05.10 |
55일차. DB 9 - JOIN (INTRO) (0) | 2021.05.07 |