أقوم بتصميم جدول زمني للحافلة باستخدام SQL. كل مسار حافلة يحتوي على محطات متعددة ، هل أحتاج إلى جدول مختلف لكل مسار؟

StackOverflow https://stackoverflow.com/questions/2503759

  •  21-09-2019
  •  | 
  •  

سؤال

أحاول التوصل إلى قاعدة البيانات الأكثر كفاءة قدر الإمكان. جميع طرق الحافلات الخاصة بي لها حوالي 10 محطات. تبدأ الحافلة في المرتبة الأولى حتى تصل إلى المحطة العاشرة ، ثم تعود مرة أخرى. هذه الدورة تحدث 3 مرات في اليوم.

أنا عالق حقًا في كيفية توليد الأوقات للحافلات بكفاءة وحيث يجب أن أقوم بتخزين المحطات. إذا وضعت كل التوقف في حقل وأوقات أخرى ، فلن تكون قاعدة البيانات ديناميكية للغاية.

إذا قمت بتخزين كل التوقفات واحدة تلو الأخرى في عمود ثم الأوقات الموجودة في عمود آخر ، فسيكون هناك الكثير من التكرار الذي يحدث أكثر نظرًا لأن محطة واحدة لها عدة مرات.

ربما أفتقد شيئًا ، لقد بدأت للتو في تعلم SQL وهذه مهمة تم تعيينناها.

شكرا لك مقدما.

هل كانت مفيدة؟

المحلول

ستحتاج إلى جدول واحد يحتوي على Timetable:

  • معرف الطريق
  • وقف معرف
  • وقت
  • ربما حقول أخرى حسب الحاجة (الاتجاه ، التسلسل #، بلوك #، إلخ)

أوصي بإنشاء جداول منفصلة Bus Stop (لتخزين أسماء التوقف ، LAT/LONDS ، إلخ) Route (لتخزين اسم المسار ، المحطة الأولى ، المحطة الأخيرة ، الاتجاه ، إلخ).

ربما تكون على دراية بهذا بالفعل ، لكن جدولة الحافلات يمكن أن تصبح معقدة بسرعة كبيرة. علي سبيل المثال:

  • قد تحتاج إلى تعيين محطات معينة كـ "نقاط زمنية" تظهر في الجداول المطبوعة

  • قد يكون لكل مسار اختلافات متعددة. على سبيل المثال ، قد تبدأ بعض الإصدارات أو تنتهي في محطة حافلات مختلفة

  • من المحتمل أن يكون الجدول مختلفًا يومي السبت والأحد ، ومعظم الوكالات تغير جداولها الفصلية

قد تحتاج إلى التفكير في بعض هذه الحالات ، وبناءها في مخططك.

هل هذا يساعد؟

نصائح أخرى

إليك طرق واحدة فقط (من العديد من الطرق) للقيام بذلك:

يبدو أنك ربما تريد الحصول على ملف routes الجدول ، الذي يصف كل مسار ، وله وقت البدء.

ثم stops جدول مع الأوصاف وأوقات الانتظار للحافلة في كل محطة.

أ stopDistanceMapping يصف الجدول المسافة بين محطتين ، ووقت القيادة بينهما.

وأخيرا ، الخاص بك routeMap الجدول سوف يربط الفرد routes مع قائمة من stops. يمكنك بعد ذلك ملء الخاص بك routes مسافة الجدول والوقت في استخدام وقت الانتظار من كل فرد توقف ، والأوقات/المسافات من stopDistanceMapping.

حظا طيبا وفقك الله!

في الممر الأول (الخام للغاية) ، أود أن أبقي أوقات طريق الحافلة في طاولة مثل هذا:

RouteID StartingLocationID  EndingLocationID TravelTime

أيضا أود الاحتفاظ بجدول التوقف مثل:

StopID Address City etc... (whatever other information you need about each location)

بالنسبة للطرق نفسها ، أود أن أتخزن:

RouteID StartingLocationID RouteStartTime

من الواضح أنه يجب عليك تخصيص هذا لاحتياجاتك الخاصة ، ولكن هذا يجب أن يمنحك مكانًا للبدء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top