나의 프로젝트
- 정처리--알고리즘 2021.01.31
- 나의 프로젝트 : 기획단계 2020.03.02
- 2. 디비 설계 예제 2019.12.19
- 1. 디비설계 순서 2019.12.19
정처리--알고리즘
나의 프로젝트 : 기획단계
- 프로젝트 기획
<디자인>
퍼블리싱(부트스트랩 이용)
<프로젝트 내용>
필요 요소:
+ 서버 구축
+ 관리자 페이지
필요 기능:
1) 전체 검색
-- 웹사이트 전체에서 텍스트 검색 기능
2) 콘텐츠 검색
-- 게시판 내 콘텐츠 검색 기능
-- 카테고리 필터링
3) 문의 및 상담 버튼
-- 모든 페이지에서 버튼이 노출되어야 함 (Floating 버튼 형식)
-- 버튼 클릭 시 문의사항 및 상담 요청 사항을 작성할 수 있는 Form 노출
-- Form 작성 완료 후 보내면 자사에서 메일로 해당 내용을 받아볼 수 있어야 함
4) 게시판
-- 동영상 시청 가능 (파일 업로드 형식이 아닌 유튜브 링크를 통해 동영상 열람 가능)
-- 블로그 형식의 게시판 (사진 업로드, 텍스트 입력)
-- 파일 다운로드 가능 (XML 파일)
5) 관리자 사이트
-- 동영상 유튜브 링크 업로드
-- PDF 파일 업로드
-- 사진과 텍스트 입력이 가능한 게시판
6) 웹사이트 내 Form 입력 후 전송 시 자동 메일 발송
-- Contact US 또는 뉴스레터 등록 시 사용자가 Form을 입력하면 입력한 이메일로 Thanks mail 발송
<참고자료>
천재백과교육사이트
'나의 프로젝트 > ERD 설계(DB) 및 기획' 카테고리의 다른 글
2. 디비 설계 예제 (0) | 2019.12.19 |
---|---|
1. 디비설계 순서 (0) | 2019.12.19 |
2. 디비 설계 예제
앞서배운 디비 설계 순서에 맞게 디비 설계를 해보겠습니다. 게시판 쪽을 담당하여 게시판 위주로 적어보았습니다.
Tools
- draw.io : ERD 다이어그램
- mysql benchwork : EER Diagram 및 물리적 스키마 설계
- intellij Database Tool
나는 처음에 mysql로 EER Diagram으로 진행하다가 intellij 툴로 바꾸었다. 인텔리제이는 자동으로 테이블과 컬럼을 만들어주는게 쉽고 간편하게 되어있어 선택하였다.
1단계 : 요구분석
나의 요구분석 예제
화면요소
- 상단바: 알림 버튼/ 게시판 리스트 / (검색)
- 상단 배너 ( 자리 잡아놓기)
- 메뉴바 : 홈 / 검색 / 글쓰기 / 북마크 / 마이페이지(설정)
- pull to refresh
- 포스팅 리스트
( 포스팅 리스트 필터, 최신순(글 작성기준)/ 최근 업데이트 순(댓글포함 기준) / 인기순 (좋아요 + 뷰) / 댓글순)
뷰 수, 좋아요 수, 댓글 수, 북마크, 글 작성 일자 제공(1시간 이내 분단위, 1시간 이후 시간 단위, 24시간 이후 일별 단 위), 타이틀 및 텍스트(이미지 제공), 작성자 정보 제공(회사 정보, 닉네임)이 존재하고있다.
- 자유게시판(Topic + 타임라인) 시시콜콜한 얘기 등 일반적인 자유 글 게시판인데, 사용자는 회사와 일반 이메일을 사용할수있다.
- 회사라운지는 회사 정보에 따라서 (연봉/ 상사등) 게시글을 올리는 곳인데, 사용자는 회사 이메일만 사용할수있다.
- 현 업계(IT/ 건설/통신/서비스 등)는 업계 트랜드, 업계 타사 동향, (연봉/채용)을 올리는 곳인데, 사용자는 회사와 일반 이메일(기능 제한)을 사용할수있다.
- 현직군라운지(세일즈/기획자/디자인/프로그래머 등) 직군별 면접 질문, 이직 팁(연봉/채용)을 올리는 곳인데, 회사와 일반이메일(기능 제한)을 사용할 수 있다.
- (옵션) 관심업계(IT/건설/통신/서비스 등) 업계 트렌드와 업계 타사 동향, (연봉/채용)을 올리는 곳인데, 회사와 일반 이메일(기능 제한)을 사용할수있다.
- (옵션) 관심 직군 라운지(세일즈/기획자/디자인/프로그래머 등) 직군별 면접 질문, 이직 팁(연봉/채용) 을 올리는 곳인데 회사, 일반 이메일(기능 제한)을 사용할수있다.
1)게시글 메인 페이지 조회 (2일)
- Member 연동된 테이블 조회
- 검색조건 ( 게시글 제목 + 내용으로 검색)
- 정렬탭 선택후 ( 최신순, 인기순으로 선택 가능)
- (기능) 페이징 처리
- (기능) 게시글 조회, 글쓰기창으로 등록
- 게시글 제목 클릭시 상세페이지 이동
2)게시글 상세 페이지 조회 (5일)
- (기능) 이미지 업로드
- (기능) 조회시 조회수 증가
- 북마크 아이콘 클릭시 북마크 테이블에 수정, 등록, 삭제
- 좋아요 아이콘 클릭시 좋아요 테이블에 수정, 등록, 삭제
- 게시글 수정, 삭제, 등록
- 댓글 조회, 수정, 삭제
3) 북마크 페이지 + 좋아요 페이지(1일)
- 북마크 페이지
- 좋아요 페이지
다른 사람의 요구분석 예제
- 한빛 항공사에 회원으로 가입하려면 회원아이디, 비밀번호, 성명, 신용카드 정보를 입력해야 한다
- 회원의 신용카드 정보는 여러 개를 저장할 수 있는데, 세부적으로는 신용카드번호, 유효기간을 저장할 수 있다
- 한빛 항공사에서는 보유한 비행기에 대해 비행기번호, 출발날짜, 출발시간 정보를 저장하고 있다
- 한빛 항공사에서는 좌석에 대한 좌석번호, 등급 정보를 저장하고 있다
- 회원은 좌석을 예약하는데, 회원 한 명은 좌석을 하나만 예약할 수 있고, 한 좌석은 회원 한명만 예약할 수 있다
-
비행기에는 좌석이 존재하는데, 비행기 하나에는 좌석이 여러 개 존재할 수 있고 한 좌석은 반드시 하나의 비행기에만 존재해야 한다.
그리고 좌석은 비행기가 없으면 의미가 없다.
2. 개념적 설계
개념적 설계로 E-R 다이어그램 만들기
작성한 요구사항 명세서에서 데이터베이스를 구성하는데 필요한 개체, 속성, 개체 간의 관계 를 추출하여 ERD를 생성합니다.
1. 개체와 속성 추출
-
대부분 명사로 선별한다
2. 개체 간의 관계 추출
-
개체 간의 관계를 추출한다
-
대부분 동사로 선별한다 (개체간의 관계를 나타내는 동사이여야 한다)
-
관계에 속한 속성도 있을 수 있다
-
1:1, 1:N, N:M
-
필수적인 참여, 선택적인 참여
1. 개체와 속성 추출
나의 개체와 속성 추출 예제
객체 | 속성 | |
boardRandom | 자유게시판 | title, user, companyEmail, email |
compRounge | 회사라운지 | title, user, companyEmail, email |
currentWorkType | 현 업계 | title, user, companyEmail |
currentWorkRounge | 현직군라운지 | title, user, companyEmail |
interestWorkType | 관심업계 | title, user, companyEmail, email |
interestWorkRounge | 관심 직군 라운지 | title, user, companyEmail, email |
common | 공통 테이블 | id, noticeBoardId, appinfoid, listVersion, statusCode, title, linkUrl, createDatetime, createHost, updateDatetime, updateHost, lang_code, osDivisionCode, boardType |
osDivisionCode | os구분 | android, LG+/android/LG U+, iphone1/ iphone2 |
다른 사람의 개체와 속성 추출 예제
객체 | 속성 |
회원 | 회원아이디, 비밀번호, 성명, 신용카드 |
신용카드 | 신용카드번호, 유효기간 |
비행기 | 비행기번호, 출발날짜, 출발시간 |
좌석 | 좌석번호, 등급 |
위쪽 다른사람의 요구분석을 참고해서 만드셨다. [출처 밝힘]
2. 개체 간의 관계 추출
- 일대일(1:1), 일대다(1:N), 다대다(N:M)
- 관계 : 선택적인 관계, 필수적인 관계
나의 개체간의 관계 추출
관계 | 관계에 참여하는 개체 | 관계유형 | 관계속성 |
존재, 업로드 |
게시판(필수) : 한 회원은 자유 게시판에(만) 접근할 수 있다 일반이메일(필수) : 한 이메일은 한 회원이 보유한다. |
1:N |
ex) 자유게시판 |
존재, 업로드 |
게시판(필수) : 회사 이메일을 보유한 회원은 여러 게시판에 접근할 수 있다 일반이메일(필수) : 한 이메일은 한 회원이 보유한다. (기능 제한)
회사이메일(필수) : 한 이메일은 한 회원이 보유한다. |
1:N |
ex) 현 업계, 회사라운지, 관심업계, 관심 직군 라운지 |
존재, 업로드 |
게시판(필수) : 회사이메일을 보유한 회원만 회사라운지 게시판에 접근할 수 있다. 이메일(필수) : 회사 이메일은 한 회원이 보유한다. |
1:N |
ex) 회사라운지 |
다른 사람의 개체간의 관계 추출
관계 | 관계에 참여하는 개체 | 관계유형 | 관계속성 |
보유 |
회원(선택) : 한 회원은 여러 신용카드를 가질 수 있다 신용카드(필수) : 한 신용카드는 한 회원이 보유한다 |
1:N | |
예약 |
회원(선택): 한 회원은 여러 비행기를 예약할 수 있다 비행기(필수): 비행기 한 좌석은 한 회원이 예약한다 |
1:N |
요구사항에서는 없음 ex. 예약번호 예약일자 |
존재 |
비행기(필수) : 비행기 하나에는 좌석이 여러개 존재한다 좌석(필수) : 한 좌석은 하나의 비행기에만 존재해야 한다 |
1:N | 비행기 없이 좌석이 존재할 수 없음 |
IE 표기법
나의 ERD 생성
다른 사람의 ERD 생성
,
3. 논리적 설계
논리적 설계로 릴레이션 스키마 및 테이블 명세서 만들기
테이블 명세서 규칙1 : 모든 개체는 릴레이션으로 변환한다
테이블 명세서 규칙2 : N:M 관계는 릴레이션으로 변환한다
테이블 명세서 규칙3 : 1:N 관계는 외래키로 표현한다
테이블 명세서 규칙4 : 1:1 관계는 외래키로 표현한다
테이블 명세서 규칙5 : 다중 값 속성은 독립 릴레이션으로 변환한다
나의 테이블 명세서
다른 사람의 테이블 명세서
규칙 1 : 다중 값 속성은 독립 릴레이션으로 변환한다
회원아이디 | 성명 | 비밀번호 |
1 | 박씨 | 1234 |
2 | 김씨 | 12345 |
3 | 이씨 | 123456 |
규칙2 : N:M 관계는 릴레이션으로 변환한다
회원 릴레이션 | 회원번호 | 이름 | 부서 |
상품 릴레이션 | 제품번호 | 제품이름 |
주문 릴레이션 | 주문번호 | 회원번호 | 주문날짜 | 제품번호 |
주문 릴레이션 | 회원번호 | 제품번호 | 주문날짜 |
규칙3: 테이블 명세서 규칙3 : 1:N 관계는 외래키로 표현한다
신용카드 릴레이션 | 신용카드번호 | 회원아이디(외래키) | 유효기간 |
좌석 릴레이션 | 좌석번호 | 비행기번호(외래키) | 등급 |
규칙4: 테이블 명세서 규칙4 : 1:1 관계는 외래키로 표현한다
회원 릴레이션 | 사원번호 | 사무실번호(외래키) | 이름 |
사무실 릴레이션 | 사무실번호 | 사원번호(외래키) | 사무실전화번호 |
규칙5: 테이블 명세서 규칙5 : 다중 값 속성은 독립 릴레이션으로 변환한다
사원 릴레이션 | 사원번호 | 이름 |
자녀 릴레이션 | 사원번호(외래키) | 자녀이름 |
4. 물리적 스키마 및 구현
intellij에서 테이블 생성
나의 물리적 구현
다른 사람의 물리적 구현
5. ERD 다이어그램 변경이력
나의 변경이력
다른 사람의 변경이력
ERD설계 | 이슈사항 |
- 회원이 예약할때 비행기+좌석을 같이 예약하지 않나? 좌석은 비행기 없이는 존재하지 않음.
결론 - 좌석은 weak entity임 |
|
- 현실적으로 한 회원은 여러 비행기를 예약할 수 있다. 1. 회원 릴레이션에 비행기번호를 추가하면 회원은 하나의 비행기만 예약할 수 있게 된다 2. 또한 한 비행기에 여러 회원이 예약될 수 있다. 3. N:N이 맞아 보인다 |
6. 결론
출처 sources
'나의 프로젝트 > ERD 설계(DB) 및 기획' 카테고리의 다른 글
나의 프로젝트 : 기획단계 (0) | 2020.03.02 |
---|---|
1. 디비설계 순서 (0) | 2019.12.19 |
1. 디비설계 순서
설계 단계
1. 요구분석
- 먼저 실제 세계에서 어떤 시스템을 구축할 것인지 요구사항 수집
- 요구사항에 대해 어떤 데이터들이 필요한지 분석
2. 개념적 설계
- ER 다이어그램을 통해 요구사항을 개념적으로 표현
3. 논리적 설계
- 관계 모델(Relation model)을 통해 개념적 설계를 논리적으로 표현
4. 물리적 설계
- 실제 디스크와 같은 물리 저장장치에 데이터를 저장할 수 있도록 표현
5. 구현
- 데이터베이스 스키마를 실제 파일로 생성하는 단계
잘 설계된 데이터베이스
- 불필요한 데이터를 제거함으로써 디스크 공간을 절약합니다.
- 데이터 정확성(accuracy)과 무결성(integrity)을 유지합니다.
- 유용한 방법으로 데이터에 접근할 방법을 제공합니다.
프로세스
- 요구사항을 분석하거나 데이터베이스의 용도 식별하기
- 데이터를 테이블로 구성하기
- primary key를 찾아내고 관계를 분석하기
- 테이블을 standardize 하기 위해 normalizing 하기
컬럼 유형
- CHAR —고정된 길이의 문자
- VARCHAR — 가변적인 길이의 문자
- TEXT — 많은 양의 문자
- INT — 음수이거나 양수인 모든 숫자
- FLOAT, DOUBLE —소수점을 가질 수 있는 숫자
- BLOB — 바이너리 데이터
개체 간 관계 생성 (Relation)
일대일 관계
일대다 관계
다대다 관계
논리적 설계 단계
요구사항과 화면을 보면서 기본적인 테이블을 설계합니다. 설계는 종이 또는 Excel로 진행합니다.
아래와 같이 Excel에 필요한 테이블명 및 필드명을 기술하고 필드명의 특이 사항들을 비고란에 표시하는 방식으로 진행합니다.
항목 : 테이블명, 필드명, 비고사항(코드, 외래키, 형식등) 등을 상세하게 적으면 됩니다.
물리적 설계 단계
논리적인 테이블 설계가 끝나면 각 필드의 물리적인 명칭과 Type을 지정합니다.
Excel로 작성하였다면 기존에 작성했던 필드 뒤에다 작성하면 됩니다.
항목 : 필드명(영문), Type
출처
[DB이론] DB 설계 개요
1. DB설계 방법 DB 설계 단계는 위의 그림과 같습니다. 실세계 - 요구사항 수집 분석 먼저 실제 세계에서 어떤 시스템을 구축할 것인지에 대한 요구사항을 수집합니다. 요구사항에 대해 어떤 데이터들이 필요한지..
victorydntmd.tistory.com
[번역] 데이터 구조와 설계 — 튜토리얼
본 글은 Database Structure and Design Tutorial by Lucidchart의 번역 글입니다.
medium.com
'나의 프로젝트 > ERD 설계(DB) 및 기획' 카테고리의 다른 글
나의 프로젝트 : 기획단계 (0) | 2020.03.02 |
---|---|
2. 디비 설계 예제 (0) | 2019.12.19 |