- 1205 정규화&UML2023년 12월 05일 17시 20분 23초에 업로드 된 글입니다.작성자: 삶은고구마
UML
1개의 시나리오-유스케이스1개 -시퀀스1개
기획 단계
유스케이스 다이어그램
가장먼저 그려지는 다이어그램
세부사항까진 아니고 전반적인 구조를 그려냄
클래스 다이어그램/객체 다이어그램/상태 다이어그램..
이 부분에서 구체적으로 설계하기 시작.
=>구현단계에서도 계속해서 사용하게 됨
1.유스케이스 다이어그램
다른 시스템도 사람처럼 그림(sms시스템)
하나의 기능 단위로 작성 개념은 자바와 유사함. 올바르지 않은 기획과 올바른 기획 유스케이스 다이어그램
위의 예시로 유스케이스 다이어그램을 만들어보자.
1차 일단은 사용자와 사용자가 할 수 있는 일을 간략하게 나타냄
2차 사용자간의 관계와 할 수 있는 행위를 명확하게 구분함
회원가입,로그인은 일반사용자가
상품관리와 통계조회는 관리자가 할 수 있지만
회원정보 조회, 상픔목록조회 같은 것은 일반사용자와 관리자가 공통으로 할 수있음.
또한 결제 관련 행위는 sms시스템이 관여되어있음.
3차 2차를 좀 더 보기 좋게/ 알기 쉽게 구분함.
시퀀스 다이어그램
회원가입/상품조회의 작업 절차를 가시화 해보자..
작업의 순서는 위에서 아래고, 화살표를 따라 순차적으로 진행된다.
view-controller-service-dao mvc 패턴을 기준으로 작업.(각 단이 맡은 역할이 명확해서 사용/관리 용이)
실선:message
점선:Reply Message(응답)
opt 옵션(해도 되고,안해도 됨)
아래 예제 같은 경우엔 회원이 상품 검색을 할 수도, 안할 수도 있어서 opt영역으로 감쌌다.
alt if~else
결과가 2개 이상인 경우.
아래 예제 같은 경우엔 상품조회 결과가 있을 수도 있고 없을 수도있기에 alt영역으로 감쌌다.
if(상품목록결과가있음)
else
상품목록결과가없음
+
2개가 아니라 2개이상!
if~else로만 끝나는게 아니라 그 이상의 조건이 붙을 수도있다.
정규화
1정규화
모든 컬럼의 데이터는 원자값으로 이루어져야 한다.
(원자값:더 이상 쪼개질 수 없는 상태 즉, csv 제거)
2정규화
복합 pk인 경우 부분 함수적 종속을 제거하여 완전 함수적 종속 상태
-부분 함수적 종속: 복합 pk에서 일부컬럼에 종속 된 경우
-완전 함수적 종속: 복합 pk에서 모든 컬럼에 종속 된 경우
부분 함수적:학생번호로 학생명을 알 수있음, 수강과목번호로 수강과목명을 알 수있음
완전 함수적:학생번호+수강과목번호로 학점을 알 수있음.
학점은 두개의 pk가 있어야 확인이 가능하다.
정처기 때 이거 헷갈렸는데 이제서야 확실히 이해함...3정규화
이행적 함수 종속이 없는 경우
x->y->z
bcnf
4정규화
5정규화
오늘은 3정규화까지.
테이블 연관 관계
연관관계 특징 1:1 참조하는 컬럼값(fk)를 다시 pk로 사용하는 경우
해당하는 값을 한 번만 사용할 수 있음
식별관계
테이블을 나누지 않고, 합치는 것도 고려할 수 있음
(단, 데이터가 많지 않을때에 한해)1:N (부모자식 관계) 참조하는 컬럼값을 복수의 레코드에서 사용하는 경우
해당값을 여러번 사용할 수있음
비 식별관계
ex)
한 회원의 배송지가 여러개인 경우N:M(다대다 관계) 1:N / 1:M의 관계가 성립되는 경우
두 개의 테이블만으로는 표현이 불가하므로
연결테이블(브릿지테이블)이 존재해야 한다.
ex)
하나의 게시글은 여러개의 해시태그를 사용할 수 있다.
하나의 해시태그는 여러 게시글에 사용 될 수 있다.예제
첫번째의 조잡한 테이블을 1,2,3정규형을 고려하여 총 5개의 테이블로 나누었다.
나같은 경우엔
tb_topping
tb_mainmenu
tb_order
매운맛정도를 포함할 tb_spicy까지는 잘 분리해냈는데
복합 pk를 어떻게 해야 하나 생각을 했다..
주문번호/주메뉴번호에 더불어 토핑도 주메뉴마다 다른터라 세개를 묶는 것이 맞는데,
마지막 오더에 카레라면엔 토핑이 빠져있어서 이걸 포함시켜야 고민함.
복합 pk 테이블에는 하나라도 널 값이 있으면 안된다 한다.
생각해보니 토핑메뉴도 pk인데 null값이라는 것 자체가 문제였음.
'공부 > web-server' 카테고리의 다른 글
1214 WebServer 7일차 (1) 2023.12.14 1212 WEB SERVER 5일차 (0) 2023.12.12 1211 WebServer 4일차 (0) 2023.12.11 1208 WEB SERVER 3일차 (0) 2023.12.08 1207 WEB SERVER 2일차 (2) 2023.12.07 다음글이 없습니다.이전글이 없습니다.댓글