<크로스핏+헬스장겸업 종합 피트니스 센터 관리프로그램>
공통기능
로그인,회원가입,공지사항,결제,문의게시판,리뷰,회원권구매기능(멤버십),상품판매(오프라인)-매출집계포함,
회원권 구매시 프로그램은 따로 구매없이 신청하는방식으로
/노쇼 패널티
횟수로 프로그램 예약후 노쇼할경우 구매한 이용권 일수에서 하루 차감
고객
회원권구매,리뷰작성,문의작성
출석현황
트레이너
지점회원관리, 공지사항작성, 재고(소모품,운동기구)관리, 프로그램관리(기본프로그램이외의프로그램 개설시 본사승인),휴가신청(각조 선택사항)
챗봇기능(선택사항)-상담겸문의관리
본사
지점매출관리, 지점트레이너관리, 회원관리, 지점재고품 발주시 관리
=======================================DB===================
테이블
지점
고객
고객 password history
고객상세
직원
직원 password history
관리자상세
공지사항 (사진)
결제내역(멤버십,상품)
문의 (사진)
문의 답변
상담내역
리뷰 (사진)
리뷰 답변
멤버십
상품
프로그램
프로그램개설신청
프로그램예약내역
소모품
운동기구
재고
발주내역
공급업체
출석현황
노쇼 패널티
매출
파이널 프로젝트는 제 3정규화 까지만!
동일한 스토리보드로 테이블생성!
오토인크리먼트 -> 대체할 수 있는 컬럼 (1개, 2개 ...) 원래 키 표시
대체키 있으면
최종만들어지면 반정규화까지! (생각중) join문의 퍼포먼스느낌으로 역정규화 안할수도
설계순서 -> 개 논 물
파일업로드 : 더 디테일하게 (이미지, 텍스트)
이미지: 다운로드 형태 x, src형태로
다운로드할 때 옵션
<a href="저장된파일이름" download="다운받을 새로운파일이름"
웹브라우저가 해석할 수 없는것은 다운로드 됨
오리지널 이름 컬럼있으면 그걸로 해도됨!
N대N은 정규화해야함
제1정규화 (원자값) -> 테이블이 늘어나면 해결
제2정규화 (함수 종속성) 키에 종속되지 않는 컬럼을 제거 -> 다른테이블의 속성이나 테이블을 만들어서 해결
복합키일때 부분종속 X
autoincrement를 사용하면 종속성을 판단하기 힘들어짐
주문테이블 주문가격O 상품가격X 세일할수도 있음..
제3정규화 키가 아닌값에 종속되는것을 제거 -> 테이블을 만들어서 해결
팀별로 (개념설계) -> entity (테이블 생성) -> 속성 도출 -> n개의 테이블 -> n개의 컬럼
통합(논리설계) -> 정규화(pk) -> 관계(FK)
물리설계 : 튜닝 ex)인덱스(색인), 뷰, 함수(특정값을 변경) 파이널에서는 생략(기본적인것만:FK 등등 ) 데이터가 얼마 없을거라서..
반정규화(역정규화) -> 정규화를 안하는것 X
1,2,3정규화 후에 편의를 위해 정규화를 깨는것
기본정보와 상세정보를 나누는 이유 : select는 무조건 모든 열을 지나감 ! 로그인할때 id와 password열만 검사하면 되는데 열 수가 많으면 시간이 많이 걸리기 때문에 나눔
반정규화 열을 나누면 조인발생
반정규화 행을 나누면 union all(union 속도 차이 많이 남)
1.컬럼중복
2.세로분할(조인) FK중복발생
3.가로분할 테이블중복
4.계산결과 컬럼
5.history 이력중복 (password 등등)
4,5번은 반정규화 해야됨
최대 12월20일쯤 깃허브 공통주소 만들기
테이블 40~50개 정도 예상!
-DB설계 강사님 피드백
branch(지점) 는 누가 입력? 수정 해야함
직원이 level이 있으면 branch등록가능하다
schedule 누가 입력?
notice - 직원이 입력 / 고객이 보는 전체공지(지점별X)
비품이랑 지점,직원이랑 연결 입력 -> 직원이
수정 -1
공급업체 추가 발주내역 이력 추가
교체 내역 추가
조인 ... 퀄리티
굳이 필요없음 넣을거면 프로세스 확장해서 넣기(공급, 폐기 이력)
금액이랑 연결 -> 회원이 결제 내역
4개의 복잡한 프로세스가 나와야 할 수 있음
이력을 남기는 테이블이 필요 / 없으면 비밀번호라도
mount 필요X
발주내역 -> 지점이
본사가 공급 공급내역 -> 본사가
장비목록 - 장비목록을 주문내역 테이블 -> 브랜치 - 직원
question
customer -> 빈약 (성별, 나이, 키, 몸무게 등등 운동에 필요한 정보들 추가)
프로그램 직원이? 지점이? 본사가?
회원등록하는데 돈이 드는가.. 아님
만약 본사가 프로그램을 만들면 모든 지점에서 적용
아니면 본사가 정해놓은 프로그램중에 선택 하던지
program begin , end 시간, 날짜
프로세스 통일
본사 중심, 개별 중심인지 통일 해야함
이테이블의 c를 하는 사람은 누군지
r을 하는 사람은 누군지
주인은 누군지
u를 하는 사람은 누군지
보직에 관련된 프로세스가 필요할 수도 있음
팀들간의 프로세스 확립이 필요
본점과 지점간의 관계
직원들이 어디소속인지
한 테이블의 crud 의 주체를 파악해서 권한 주기
프로세스 정립 후 -> 컬럼 추가
데이타 모델링 과정을 직접했는지
-> 내 마음대로는 안됐지만 상의를 통해 정했다
엔터티 수는 충분 인당 5~6 개
첫프로그램을 등록할때 회원가입
branch_no 1, branch_name '본사' -> 임의로 넣을건지 master연결해서 본사도 master가 만들건지
master 테이블 추가 employee랑 branch 종속
program 추가를 본사가 하고 지점에서 선택
c - 지점
branchSchedule - 지점 스케줄
customerSchedule - 회원 스케줄 테이블 추가 달력만들기

이런 결제 프로세스 추가
직급 테이블 추가
department_no
dapartment_name
프로그램
begin ????
회원이 등록을 하면 본사에 등록 지점은 아무곳이나
소모품 이름 통일해서 수정
발주, 폐기 에 대한 이력 테이블
notice 본사 통합 지점에서 작성 불가
sale branch_no 빼기
매출 -> 예약에서 뽑아와서 출력
program_no 필요 X 결제는 mambership 만
프로그램 어플리케이션 테이블 삭제 -> 프로그램 일괄 등록으로 변경했으니까
프로그램 어플리케이션을 소모품 발주 이력으로 변경
소모품 주문내역 테이블 추가
승인/승인거절
paymenthistory 랑 membership연결
회원권 상세정보
각자 다녔던 회사의 프로세스로 생각해서 조금 의견충돌이 있었지만 상의를 통해 의견통합
코딩은 안했지만 쿼리작업은 다같이 했다
입력폼, domain -> vo 생성
합성, select -> Map 사용
서비스레이어 꼭! (인터페이스는 안만들어도 됨)
DB수정
삭제라는 개념은 없음 (잘못입력하면 수정)
0. 프로세스(지금 DB : 모듈을 나누기 힘들다) 예약 모듈이 너무큼 이렇게 되면 많은 사람이 투입되는게 더 비효율적일 수 있음
고객이 영수증 출력
결과물을 그래프로 보여 줄 수 있음
생각
question 아무나 작성이 가입한 회원과 결제한 회원인지 아니라면 비회원도 포함인지
question을 비회원도 작성할 수 있다면 question 테이블에 customer_no를 삭제하고 question_pass 컬럼 추가 해야 됨 (만약 비밀글 기능도 사용하려면 secret컬럼도 추가해야됨)
review 작성을 예약을 하고 출석을 한 회원만 작성이 가능하도록 program_reservation -> customer_attendance-> review
review테이블
program_reservation_no를 customer_attendance_no 로 수정
출석 테이블
굳이 나가는 시간이 필요없을 듯
해당 프로그램의 인원수가 다 차면 예약 버튼 비활성화
관리자 로그인과 고객 로그인 창을 통일할건지 안할건지
통일 : 관리자 아이디에 조건 부여 -> 쿼리에 if문 -> 쿼리 복잡
통일X : 로그인창을 각각 만들어야됨
쿼리가 복잡할만한 것들
관리자 : 리뷰 출력 -> program, program_date,
옵션 테이블 추가 -> 옵션항목에 따라 누적테이블 -> 페이먼트 수정해야함
DB수정
고객가입
재고
- sports_equipment_oder 에 발주, 폐기 본사에 요청
- order_status 컬럼으로 0:대기 1:승인
20,21,22 템플릿 적응
AWS 수업 을 먼저 할지 말지(신용카드 가져오기)
직접 os에 (우분트 리눅스 톰캣 - 안에 jdk설치 되어있어야함 db)
26일에! DB통일을 위해 수업먼저 할거임