أقوم بتصميم جدول زمني للحافلة باستخدام SQL. كل مسار حافلة يحتوي على محطات متعددة ، هل أحتاج إلى جدول مختلف لكل مسار؟
سؤال
أحاول التوصل إلى قاعدة البيانات الأكثر كفاءة قدر الإمكان. جميع طرق الحافلات الخاصة بي لها حوالي 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
من الواضح أنه يجب عليك تخصيص هذا لاحتياجاتك الخاصة ، ولكن هذا يجب أن يمنحك مكانًا للبدء.