2013-06-12 3 views
0

데이터베이스 모델링 방법에 대한 도움이 필요합니다. 각 대중 교통 노선에 대한 시간표를 보관해야합니다. 우리가 가진 것을 보자 ...MYSQL에 많은 시간표를 저장하는 방법은 무엇입니까?

내가 개발하고 있어요 프로그램의 목적은 공식 시간표에서 오류를 확인하는 것입니다. 각 버스에는 10 초마다 위치를 데이터베이스로 보내는 추적 GPS 장치가 있습니다. 따라서 좌표가 정지 지점 중 하나의 좌표에 가까운 보고서의 시간을 확인하고 그 시간을 공식 시간과 비교해야하며 큰 차이가있는 경우 문제를보고하는 다른 테이블 통계에 행을 작성해야합니다.

어쨌든, 이것은 상황을위한 것입니다. 진실은 효율적인 방법으로 저장하는 방법에 대한 단서가 없다는 것입니다.

가 나는 중지로 테이블 만들기에 대한 생각 : - 이름 - LAT - LON - LINE - STOP_ID (PK) 시간표 시간표가 그 [5시 3분을 중지 모든 시간을 포함하는 배열이 연재 될

, 5 : 25,5 : 50,6 : 12, ...].

비록 이것이 좋은 해결책은 아니지만 더 나은 접근 방법에 대해 생각할 수는 없습니다.

어쩌면 내가 정류장을위한 테이블과 다른 시간표를 만들 수 있지만 시간표의 열은 무엇이겠습니까? 나는 주간, 토요일 또는 휴일, 많은 시간, 분 ... 그리고 각 중지마다 다른 모든 변수가 있습니다.

이 문제를 해결하는 방법에 대한 의견을 공유해 주시겠습니까? 대단히 감사합니다 !!

+0

본인은 추가 조사를하거나이 디자인 및 구현에 도움이 될 수있는 사람을 고용 할 것을 제안합니다. 나는이 사이트가 실제로 무엇을위한 것이 아닌가 걱정된다. 시간과 돈이 들지 않도록하는 방법은 없습니다. –

+0

@ Simonatmso.net 저는 대학을위한 최종 프로젝트를 진행하고 있습니다. 나는 안드로이드 앱과 다른 것들을 만들었습니다. 전체 프로젝트가 완료되었고 코디네이터가이 기능 (일부 간단한 소프트웨어로 시간표에 실수가 있는지 확인)을 추가하려고했습니다. 이게 가능하다고 생각하는 유일한 방법은이 데이터베이스와 PHP 스크립트를 만드는 것입니다. 그러나이 디자인을 효율적으로 마주 칠 방법을 모르겠습니다. 당신이 지금 상상할 수 있듯이, 나는 누군가를 고용하지 않을 것이고, 나는이 분야에 대한 약간의 생각이나 도움을 요청할뿐입니다. 나는 연구를 해왔지만 아직도 많은 의구심을 갖고있다. 어쨌든 고맙습니다 ... –

+1

간단한 대답은 정규화 된 데이터베이스에 데이터를 저장하려는 것입니다. 데이터베이스 정규화에 대해 읽어보고 테이블에 저장해야 할 내용, 즉''routes''''',''routeHasStops'''에 대한 예상 중지를 기록한''scheduledStop'' 테이블, 그리고'' 'routeHasStops' pkid에 대해 실제 날짜/시간을 기록하는 로깅 테이블. 필요에 따라 위도/경도 및 기타 데이터를 추가하고, 일부 데이터 수집, 처리 및 기타 작업을 수행하면 데이터를 보유하게됩니다. 이 경로에서 특정 문제가 발생하면 기꺼이 도와 드리겠습니다 :) –

답변

2

Simon이 언급했듯이, 당신은 큰 프로젝트를 시작하고 있습니다.

제안 : 관계형 DBMS의 다양한 일반 형식을 읽으십시오. 당신이 그것을 가지고 있지 않다면 이것은 당신에게 도움이되는 배경을 줄 것입니다.

엔티티 (테이블) 란 무엇입니까? 버스 노선 (출발 노선과 왕복 노선이 서로 다른 두 노선으로 간주). 해당 회선의 스테이션이 주문되었습니다. 여행 (예 : 106 버스는 중앙역에서 05:22, 다른 여행은 05:42에서 출발합니다.) 예정된 중지 GPS 관측.

다음은 가능한 테이블과 컬럼은 다음과 같습니다 RDBMS 디자인

Busline table: one row for each busline. 
    Busline e.g. 106-outbound or 108-inbound (pk) 
    Description 

Station table: one row for each bus stop, including ends of trips 
    Busline  part of pk, fk to Busline e.g. 106 
    Stationid  part of pk kf to Station 
    Description e.g. Second Avenue Eastbound at Houston Street 
    lat 
    long 

Trip table: One row for each bus trip. 
    Tripid pk 
    Busline fk to Busline 
    Description e.g. 05:22 trip Central Station to University Park 

Schedule table: one row for each scheduled time for each trip at each stop 
    Scheduleid pk ... ascending serial number. 
    Busline  fk to Station 
    Stationid fk to Station 
    Tripid  fk to Trip 
    Time 

Observation table a row for each of your GPS readings 
    Observationid pk ... ascending serial number 
    Busline if you know it fk to Busline 
    Tripid if you have it fk to Trip 
    Time 
    Lat 
    Long 

내 조언은 하나의 DBMS 컬럼에 데이터의 여러 항목을 직렬화 방지하는 것입니다. 이것이 내가 스케줄 테이블을 제안한 이유입니다.

Busline, Station, Trip 및 Schedule 테이블을로드하는 방법을 알아 내고 Observation 테이블에 관측치를로드했으면 관측치와 일정을 상호 연관시키는 흥미로운 연습이 될 것입니다.

주의하십시오! 시 교통국을 당황하게하실 수 있습니다! :-)

+0

당신과 같은 제한된 프로젝트의 경우 몇 개의 버스 정류장과 여행 중에 단지 몇 개의 정거장을 측정하도록 선택할 수 있습니다. 두 개의 가장 인기있는 버스 노선에서 두 번씩 여행 할 때 첫 번째, 중간 및 마지막 정거장을 측정 할 수 있습니다. 그것은 당신의 기술의 가치를 입증하고 증명할 것입니다. 어쨌든 목에 큰 고통을주지 않으려면 여러 데이터 항목을 단일 열로 serialize하지 마십시오! 아, 그러면 GPS 좌표에 평등성 기준보다는 근접성을 사용해야합니다. haversine 수식을보세요. –

+0

하하, 나는 누군가를 놀라게하지 않기를 바랍니다. XD 아이디어를 공유하고 저를 도울 시간을 내 주셔서 대단히 감사합니다. 지금 당장은 그것을 개발하는 것에 정말로 관심이 있습니다. 배우고 연습하는 문제에서, 저는 이것이 제가 처음으로 예상했던 것보다 더 크게 떠났을 때 너무 커서 두려워요. 코디네이터에게 프로젝트의 지속성으로서 향후 개선 사항으로 남겨달라고 요청할 것입니다. 나는 가까운 장래에 그것을 배우고 개발하는 시간을 가질 수 있기를 정말로 희망한다. –

+0

죄송합니다, 최근 답변을 읽지 않고 게시했습니다. 나는 그것이 단지 몇 줄의 줄과 몇 줄의 줄을 가지고 어떻게 작동 할 수 있는지에 대한 약간의 시범을하는 것이 좋습니다. 그리고 미래의 프로젝트로서 완전한 개발을 떠나야합니다. 그리고 예, 버스 통계의 위치와 각 정류소의 저장된 위치를 비교하기 위해 근접 측정을위한 haversine 공식을 이미 살펴 보았습니다. 대단히 고맙습니다. –