내일배움캠프 59일차 TIL - 심화 프로젝트 설계

2024. 7. 10. 06:07·⛺스파르타코딩클럽

2024.07.10

🔥오늘의 공부🔥

    ●  1. 심화 프로젝트 설계

 

 

프로젝트명 : 2step

프로젝트 설명

팀의 업무를 시각화한 프로젝트 관리 프로그램으로써 KanbanBoard의 대표적인 사이트인 "Trello" 웹사이트를 모티브로 설계하게 된 프로젝트이다.

KanbanBoard의 대표적인 사이트 "Trello"

구조는 위의 이미지와 같이 보드형식에 하나의 컬럼 내부엔 여러개의 카드가 존재할 수 있으며, 보드는 하나의 프로젝트 단위, 컬럼은 해당 카드들이 들어가는 곳의 상태를 나타내주고, 카드는 기본적인 기능 구현 및 업무에 대한 내용을 넣어 주게된다. 업무 상태의 따라 카드의 위치를 컬럼 단위로 변경이 가능하다.

 

 

와이어 프레임

1. 로그인 된 사용자는 여러개의 보드를 만들 수 있다.

2. 보드를 생성한 사용자는 해당 보드에 대해 Manager 권한을 가진다.

3. Manager는 사용자들을 보드에 초대할 수 있는 전체적인 권한을 가지며, 초대된 사용자들은 User의 권한을 가진다.

4. User의 권한을 가진 사용자들은 보드 내부의 카드에 대한 CRUD 권한만을 가질 수 있다.

5. 모든 유저들은 보드를 생성할 수 있으며 생성한 유저는 해당 보드에 대한 Manager 권한을 가지게 된다.

6. Manager는 컬럼을 추가해 줄 수 있고, 일반 유저들은 해당 컬럼이 추가된다면, 카드를 추가할 수 있다.

7. 해당 추가하는 카드는 구현하고자 하는 기능에 대한 내용과 상태에 따라 기재할 수 있다.

8. 사용자 목록을 통해 해당 보드에 존재하는 모든 유저들의 목록을 보여줄 수 있다.

9. 컬럼의 상태별, 멤버별 조회가 가능한 필터가 존재한다.

 

 

ERD

Board하나에 User 여러명이 소속이 가능하며, User 한명이 Board 여러개의 소속이 가능하므로, 정규화가 완료된 테이블 두 개가 서로 N:M 관계를 가지고 있다고 판단을 하여, 중간 테이블을 이용해 관계에 대한 매핑을 해주게 되었다.

보드 하나에는 여러개의 컬럼이 존재할 수 있으므로 Board(1) : Column(N) <OneToMany> 를 주었다.

컬럼 하나에는 여러개의 카드가 존재할 수 있으므로 Column(1) : Card(N) <OneToMany> 를 주었다.

Card 테이블은 해당 카드의 정보를 기재한 주인인 유저를 알아야 하기에 User와 1:N 관계를 맺고 있다.

Comment 테이블 또한, Card와 1:N관계를 가지고 있으며, 이는 하나의 카드에 여러개의 유저들이 댓글을 달 수 있는 관계이며, 댓글을 작성한 유저의 정보를 알아야 하기에 User테이블과 1:N 관계를 맺어주었다.

 

API 명세서

https://teamsparta.notion.site/301aac8ce65348a1aa598b6486860f86?v=6fe247fb78d848e8b9d6a4a990383e5a&pvs=4

 

 

회고

심화 프로젝트에 들어가면서 많은 요구사항들이 생겼다. 복잡한 관계에 대한 연관 관계 매핑과, 동시성 제어, 쿼리 최적화 등 다양한 어려운 기술들을 알게 되었고, 개인적으로 시큐리티를 두 번째 담당을 하게 되었는데, 덕분에 이해도는 많이 올라갔다. 이번에는 시큐리티의 필터단 예외와, 레디스를 활용해 볼 생각이다. 개인적으로 AWS와 Docker를 좀 더 학습을 해야 한다는 목표 또한 생겼다. 이제 앞으로 내가 해야 할 공부는 AWS, Docker, Redis, 동시성 제어, 쿼리 최적화 등이다.

'⛺스파르타코딩클럽' 카테고리의 다른 글

내일배움캠프 61일차 TIL - 쿼리 최적화  (1) 2024.07.13
내일배움캠프 60일차 TIL - Security 예외처리  (0) 2024.07.13
내일배움캠프 58일차 TIL - Redis  (0) 2024.07.09
내일배움캠프 57일차 TIL - Docker(1)  (0) 2024.07.08
내일배움캠프 56일차 TIL - AWS(3) RDS  (0) 2024.07.04
'⛺스파르타코딩클럽' 카테고리의 다른 글
  • 내일배움캠프 61일차 TIL - 쿼리 최적화
  • 내일배움캠프 60일차 TIL - Security 예외처리
  • 내일배움캠프 58일차 TIL - Redis
  • 내일배움캠프 57일차 TIL - Docker(1)
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (144) N
      • 🎓방송통신대학교 (25)
        • 🖥️컴퓨터과학과 (1)
        • 🌍유비쿼터스 컴퓨팅 (10)
        • ⚙️컴퓨터의 이해 (11)
        • 🏛️세계의정치와경제 (3)
      • 📚Computer Science (0)
      • 🛠️Backend (2)
      • ☕Java (14) N
        • 📝Java Programming (13) N
        • 🧩Java Design Pattern (1)
      • 🌳Spring (9)
        • 🌱Spring Framework (6)
        • 🌱Spring Security (1)
      • ⚡Python (13)
      • 🛢️Database (0)
      • 🌿GitHub (1)
      • 🌐 Network (7)
        • 📜HTTP (7)
      • 🚀DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • ⛺스파르타코딩클럽 (65)
      • 잡담 (1)
      • 정리가 필요한 글 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    세계화
    스프링
    유비쿼터스
    Java
    컴파일러
    함수
    Spring Framework
    방통대
    방송통신대학교
    유비쿼터스 컴퓨팅
    유비쿼터스 컴퓨팅개론
    spring
    클래스
    방송대
    자바
    클라우드
    다형성
    파이썬
    컴퓨터의 이해
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
내일배움캠프 59일차 TIL - 심화 프로젝트 설계
상단으로

티스토리툴바