Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Data 환경 구축하기] 분석 환경_ 테이블 구조 짜고 ERD 그리기 #19

Closed
5 tasks done
goodkse7 opened this issue Oct 25, 2022 · 4 comments
Closed
5 tasks done
Assignees
Labels
⚙️ Setting 개발 환경 세팅

Comments

@goodkse7
Copy link
Member

goodkse7 commented Oct 25, 2022

아래 테이블을 저장할 구조 짜고 ERD 그리기

  • 크롤링한 트랙 정보 데이터
  • API로 크롤링한 매치 데이터
  • 넥슨에서 제공하는 메타 데이터
  • 자체적으로 만들 트랙 요소 데이터

추가 수정사항

  • match.rank는 rank가 SQL 함수 이름이므로 변경
@goodkse7 goodkse7 self-assigned this Oct 25, 2022
@goodkse7
Copy link
Member Author

goodkse7 commented Oct 25, 2022

DBdiagram.io를 활용하여 ERD 완료

image

특이사항

  • API를 통해 받아온 매치 상세 정보는 'match' 테이블에 저장
  • 매치 상세 정보에 포함되어 있던 플레이어 정보를 'player'라는 테이블에 따로 저장하여 'match'와 FK로 연결
  • 트랙 이름과 크롤링한 트랙 정보는 'track' 테이블에 저장하여 'match'와 FK로 연결
  • 매치 타입 정보는 'match_type' 테이블에 저장하여 'match'와 FK로 연결
  • 필요 없는 컬럼은 삭제
  • 일부 컬럼명 변경

크롤링 데이터 변경 컬럼

기존 컬럼명 변경된 컬럼명
난이도 difficulty
lap
트랙 길이 length
첫 등장일 release_date

API 데이터 변경 컬럼

기존 컬럼명 변경된 컬럼명
accountNo player_id
characterName name
rankinggrade2 license
matchRank rank
matchRetired retired
matchWin result
matchTime record

논의사항 & 결정사항

  • 컬럼명 중 헷갈리는 컬럼명은 없는지 확인 필요 (ex: matchTime -> record, matchWin -> result) -> 그대로 진행
  • 테이블 구조 확인 필요
    -> API로 추출하는 모든 데이터는 별도로 저장해두기
    -> 스피드 개인전, 스피드 팀전, 아이템 개인전, 아이템 팀전만 ERD 그림대로 테이블 구축

참고 : DBdiagram 작성 코드

Table track {
  id varchar(100) [pk]
  name varchar(50)
  difficulty int(20)
  lap int(20)
  length float(20)
  direction varchar(20)
  release_date timestmap
  theme varchar(20)
}

Table match {
  id varchar(100) [pk]
  track_id varchar(100)
  start_time timestamp
  end_time timestamp
  player_id int(20)
  rank int(20)
  retired int(20)
  result int(20)
  record int(20)
  match_type_id varchar(20)
  team_id int(20)
}

Table player {
  id int(20) [pk]
  name varchar(100)
  license int(20)
}

Table match_type {
  id varchar(100) [pk]
  type varchar(100)
}

Ref: match.track_id > track.id
Ref: match.player_id <> player.id
Ref: match.match_type_id > match_type.id

@goodkse7 goodkse7 added the ⚙️ Setting 개발 환경 세팅 label Oct 25, 2022
@goodkse7 goodkse7 changed the title [DB] ERD 그리기 [DB] 테이블 구조 짜고 ERD 그리기 Oct 26, 2022
@hoinnovation hoinnovation changed the title [DB] 테이블 구조 짜고 ERD 그리기 [Data 환경 구축하기] 분석 환경 구축 테이블 구조 짜고 ERD 그리기 Oct 29, 2022
@hoinnovation hoinnovation changed the title [Data 환경 구축하기] 분석 환경 구축 테이블 구조 짜고 ERD 그리기 [Data 환경 구축하기] 분석 환경_ 테이블 구조 짜고 ERD 그리기 Oct 29, 2022
@hoinnovation hoinnovation added this to the Data 환경 구축하기 milestone Oct 29, 2022
@hyeming-king
Copy link
Member

hyeming-king commented Nov 4, 2022

ERD 추가

  • 자체수집한 데이터에 대한 테이블을 추가함.

해당 테이블 : 직선, 트리거(가속, 감속), 곡선, 지름길, 그외(장애물, 평균 도로폭)

image

참고 : DBdiagram 작성 코드

Table track {
  id varchar(100) [pk]
  name varchar(50)
  difficulty int(20)
  lap int(20)
  length float(20)
  direction varchar(20)
  release_date timestmap
  theme varchar(20)
}

Table match {
  id varchar(100) [pk]
  track_id varchar(100)
  start_time timestamp
  end_time timestamp
  player_id int(20)
  rank int(20)
  retired int(20)
  result int(20)
  record int(20)
  match_type_id varchar(20)
  team_id int(20)
}

Table player {
  id int(20) [pk]
  name varchar(100)
  license int(20)
}

Table match_type {
  id varchar(100) [pk]
  type varchar(100)
}

Table track_straight{
  track_id varchar(100) [pk]
  jump int(20)
  uphill int(20)
  downhill int(20)
}

Table track_trigger{
  track_id varchar(100) [pk]
  accel int(20)
  warp int(20)
  decel int(20)
  jump int (20)
}

Table track_curve{
  track_id varchar(100) [pk]
  hairpin int(20)
  acute int(20)
  obtuse int(20)  
  continuous int(20)
  continuous_acute int(20)
  continuous_obtuse int (20)
}

Table track_shortcut{
  track_id varchar(100) [pk]
  right int(20)
  acute int(20)
  obtuse int(20)
  special int(20)
}

Table track_road{
  track_id varchar(100) [pk]
  fence_exist int(20)
  mean_road_level int(20)
}

Table track_obstacle{
  track_id varchar(100) [pk]
  obstacle_fixed int(20)
  obstacle_moved int(20)
}


Ref: match.track_id > track.id
Ref: match.player_id <> player.id
Ref: match.match_type_id > match_type.id
Ref: track.id - track_straight.track_id
Ref: track.id - track_curve.track_id
Ref: track.id - track_trigger.track_id
Ref: track.id - track_shortcut.track_id
Ref: track.id - track_road.track_id
Ref: track.id - track_obstacle.track_id

@hyeming-king
Copy link
Member

image

@hyeming-king
Copy link
Member

최종 ERD

image

챰고 사항

  • player 테이블 생성 진행 X : 분석 목적에 맞는 데이터셋만 구축하기로 결정
  • track_straight 테이블에 all_selection 속성 추가함 (전체 직선 개수)
  • track_obstacle 테이블에 속성 컬럼명에 접두어 삭제함

참고 : DBdiagram 작성 코드

Table track {
  id varchar(100) [pk]
  name varchar(50)
  difficulty int(20)
  lap int(20)
  length float(20)
  direction varchar(20)
  release_date timestmap
  theme varchar(20)
}

Table match {
  id varchar(100) [pk]
  track_id varchar(100)
  start_time timestamp
  end_time timestamp
  player_id int(20)
  rank int(20)
  retired int(20)
  result int(20)
  record int(20)
  match_type_id varchar(20)
  team_id int(20)
}

Table match_type {
  id varchar(100) [pk]
  type varchar(100)
}

Table track_straight{
  track_id varchar(100) [pk]
  jump int(20)
  uphill int(20)
  downhill int(20)
  all_selection int(20)
}

Table track_trigger{
  track_id varchar(100) [pk]
  accel int(20)
  warp int(20)
  decel int(20)
  jump int (20)
}

Table track_curve{
  track_id varchar(100) [pk]
  hairpin int(20)
  acute int(20)
  obtuse int(20)  
  continuous int(20)
  continuous_acute int(20)
  continuous_obtuse int (20)
}

Table track_shortcut{
  track_id varchar(100) [pk]
  right int(20)
  acute int(20)
  obtuse int(20)
  special int(20)
}

Table track_road{
  track_id varchar(100) [pk]
  fence_exist int(20)
  mean_road_level int(20)
}

Table track_obstacle{
  track_id varchar(100) [pk]
  fixed int(20)
  moved int(20)
}


Ref: match.track_id > track.id
Ref: match.match_type_id > match_type.id
Ref: track.id - track_straight.track_id
Ref: track.id - track_curve.track_id
Ref: track.id - track_trigger.track_id
Ref: track.id - track_shortcut.track_id
Ref: track.id - track_road.track_id
Ref: track.id - track_obstacle.track_id

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⚙️ Setting 개발 환경 세팅
Projects
Development

No branches or pull requests

3 participants