[Database] 1. Mysql, ERD

yangjaehong·2022년 1월 25일
0

Database_project

목록 보기
1/2
post-thumbnail

node.js에 MYSQL을 연동하여 항공권 예약 웹사이트를 구축하였다.

1. ERD설계


2. MYSQL workbench에서 작성한 EER diagram

3.테이블 설명

  1. Flight
  • Flihgt_number가 pk이며 airline(항공사)을 키에 종속시킨다.

  1. Flight_leg
  • Leg_number와 Flight_number가 있고, 그 두개의 key로 인하여 Amount가 결정된다.
  • Flight_number마다 여러 개의 leg가 있을 수 있으므로 Leg_number만 Unique이다.

  1. Departure_Airport
  • Leg_number에 따라 출발하는 공항이 정해져 있고 출발 시간도 구간 마다 정해져 있기 때문에 구간 하나당 하나의 출발공항, 출발시간을 지정한다.
  • Flight_leg테이블에서 분리하여 따로 테이블을 만들었기에 부분함수 종속이 제거되었다.

  1. Arrival_Airport
  • 도착 공항정보와 시간정보도 마찬가지이다.

  1. Airport
  • Airport는 Name, City, Airport_code가 있다. Airport_code가 Name과 City를 결정한다. 그렇기에 Airport_code는 Unique이다.

  1. Can_land
  • 공항마다 착륙가능한 비행기 타입을 지정해 주었다.
  • 이는 N:M인데 왜냐하면 공항마다 여러 개의 비행기 타입을 지정하고, 비행기 타입 또한 여러 개의 공항에 지정될 수 있기 때문이다.
  • N:M이므로 Can_land라는 table로 따로 만들어 주었다.

  1. Airplane_type
  • Airplane_type은 Company(제작 회사)와 승객이 탈 수 있는 최대 자리 개수가 정해져 있다.
  • Airplane_type_name이 Company와 Max_seats를 정하게 된다.

  1. Airplane
  • Airplane에는 Total_number_of_seats가 있고 각 항공기마다 id가 존재한다.
  • Airplane_type에서 가져온 Airplane_type이 있는데 이는 Airplane테이블에서 비주요 애트리뷰트를 가져 온 것 이다.

  1. Leg_instance
  • Leg_instance에서 Leg_number(구간번호)가 유일하지 않는 이유는 날짜 마다 구간이 있기 때문이다.
  • Leg_number와 date가 있으면 사용가능 좌석과 Airplane_id가 결정된다.
  • Date 다치 애트리뷰트로 사용되기 때문에 Flihgt_leg에서 분리하여 Date는 Leg_instance에서 결정하게 하였다.

  1. Seat_reservation
  • Seat_reservation은 Date, Leg_number, User_User_id를 통해 Seat_number가 결정된다.
  • 좌석 번호는 같은 곳을 선택하지 못하기 때문에 Unique이다.

  1. User
  • User는 유저의 정보를 담는 테이블이다.

웹사이트의 구현은 다음 게시글에서 확인 할 수 있다.

profile
인하대학교 정보통신공학과 4학년 양재홍입니다.

0개의 댓글