yangjaehong.log
로그인
yangjaehong.log
로그인
[Database] 1. Mysql, ERD
yangjaehong
·
2022년 1월 25일
0
Database
mysql
node.js
0
Database_project
목록 보기
1/2
node.js에 MYSQL을 연동하여 항공권 예약 웹사이트를 구축하였다.
1. ERD설계
2. MYSQL workbench에서 작성한 EER diagram
3.테이블 설명
Flight
Flihgt_number가 pk이며 airline(항공사)을 키에 종속시킨다.
Flight_leg
Leg_number와 Flight_number가 있고, 그 두개의 key로 인하여 Amount가 결정된다.
Flight_number마다 여러 개의 leg가 있을 수 있으므로 Leg_number만 Unique이다.
Departure_Airport
Leg_number에 따라 출발하는 공항이 정해져 있고 출발 시간도 구간 마다 정해져 있기 때문에 구간 하나당 하나의 출발공항, 출발시간을 지정한다.
Flight_leg테이블에서 분리하여 따로 테이블을 만들었기에 부분함수 종속이 제거되었다.
Arrival_Airport
도착 공항정보와 시간정보도 마찬가지이다.
Airport
Airport는 Name, City, Airport_code가 있다. Airport_code가 Name과 City를 결정한다. 그렇기에 Airport_code는 Unique이다.
Can_land
공항마다 착륙가능한 비행기 타입을 지정해 주었다.
이는 N:M인데 왜냐하면 공항마다 여러 개의 비행기 타입을 지정하고, 비행기 타입 또한 여러 개의 공항에 지정될 수 있기 때문이다.
N:M이므로 Can_land라는 table로 따로 만들어 주었다.
Airplane_type
Airplane_type은 Company(제작 회사)와 승객이 탈 수 있는 최대 자리 개수가 정해져 있다.
Airplane_type_name이 Company와 Max_seats를 정하게 된다.
Airplane
Airplane에는 Total_number_of_seats가 있고 각 항공기마다 id가 존재한다.
Airplane_type에서 가져온 Airplane_type이 있는데 이는 Airplane테이블에서 비주요 애트리뷰트를 가져 온 것 이다.
Leg_instance
Leg_instance에서 Leg_number(구간번호)가 유일하지 않는 이유는 날짜 마다 구간이 있기 때문이다.
Leg_number와 date가 있으면 사용가능 좌석과 Airplane_id가 결정된다.
Date 다치 애트리뷰트로 사용되기 때문에 Flihgt_leg에서 분리하여 Date는 Leg_instance에서 결정하게 하였다.
Seat_reservation
Seat_reservation은 Date, Leg_number, User_User_id를 통해 Seat_number가 결정된다.
좌석 번호는 같은 곳을 선택하지 못하기 때문에 Unique이다.
User
User는 유저의 정보를 담는 테이블이다.
웹사이트의 구현은 다음 게시글에서 확인 할 수 있다.
양재홍
인하대학교 정보통신공학과 4학년 양재홍입니다.
다음 포스트
[Database] 2. WEB page
0개의 댓글
댓글 작성