• 프로젝트 기획
    <디자인>
    퍼블리싱(부트스트랩 이용)


    <프로젝트 내용>

    필요 요소:
    + 서버 구축
    + 관리자 페이지

    필요 기능: 
    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

앞서배운 디비 설계 순서에 맞게 디비 설계를 해보겠습니다. 게시판 쪽을 담당하여 게시판 위주로 적어보았습니다.


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. 요구분석

  • 먼저 실제 세계에서 어떤 시스템을 구축할 것인지 요구사항 수집
  • 요구사항에 대해 어떤 데이터들이 필요한지 분석

   2. 개념적 설계

  • ER 다이어그램을 통해 요구사항을 개념적으로 표현

  3. 논리적 설계

  • 관계 모델(Relation model)을 통해 개념적 설계를 논리적으로 표현

  4. 물리적 설계

  • 실제 디스크와 같은 물리 저장장치에 데이터를 저장할 수 있도록 표현

  5. 구현

  • 데이터베이스 스키마를 실제 파일로 생성하는 단계

 

잘 설계된 데이터베이스
  • 불필요한 데이터를 제거함으로써 디스크 공간을 절약합니다.
  • 데이터 정확성(accuracy)과 무결성(integrity)을 유지합니다.
  • 유용한 방법으로 데이터에 접근할 방법을 제공합니다.

 

프로세스
  1. 요구사항을 분석하거나 데이터베이스의 용도 식별하기
  2. 데이터를 테이블로 구성하기
  3. primary key를 찾아내고 관계를 분석하기
  4. 테이블을 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

+ Recent posts