2016-03-19 7 views
0

Otoyol veri yolu sistemini depolamak için bir veritabanı oluşturuyorum. Temel olarak, bu otobüsler bir şehirden diğerine seyahat eden insanlar tarafından kullanılır. Kalkış şehrine ve hedef şehre bağlı olarak, bir kişi istediği yere ulaşmak için birkaç otobüs almak zorunda kalabilir. Toplu taşıma sistemine çok benziyor. Temel fark, otobüslerin birkaç farklı şirket tarafından yürütülmesi ve veri tabanının bir uygulamanın kalkış ve varış yeri üzerinde şirket bilgi tabanını sorgulamasına izin vermesidir. Kullanıcı Roma'dan Viyana'ya seyahat etmek istediğini ve oraya ulaşmak için 3 otobüs almayı gerektirdiğini söyledi. Kalkış şehri olarak Roma'yı ve bir varış noktası olarak Viyana'yı temin ederek, başvurum, bir sonucu veren bir sorgu oluşturacak - Firma1 (İsim, Adres, İletişim Numarası), Şirket2 (İsim, Adres, İletişim Numarası), Firma3 (İsim, Adres, İletişim numarası).Otoyol otobüs ağı için veritabanı

So Far, ben geldi 4 tablolar: Oradan

Company - id,name, companyid, address, ph# 

City - id,name 

Bus - id,companyid,stopid 

Stop - id, cityid 

, ben daha tablolar birden fazla almayı gerektiren benim app gezileri için sorgular çalıştırmak böylece eklemek emin değilim otobüs. Girdiğin için minnettarım.

cevap

0

İhtiyacınız olan tablolar ve öznitelikler sahip olduğunuz fonksiyonel gereksinimlere göre belirlenir. Dolayısıyla, otobüsler, bunları işleten şirketler ve durdukları şehirler hakkında bilgiye ihtiyacınız varsa, tablolarınız yeterli bilgi içerebilir. İhtiyaçlarınız daha karmaşık hale geldiyse (ya da açık bir şekilde belirtmediğiniz, eğer söylemediklerini düşündüğünüz için gereksinimleriniz varsa), bazı bilgiler eksik olabilir.

Tasarımınızda bir resmi kusur var. id özniteliklerinizin her kayıt için benzersiz bir anahtar içereceğini varsayalım. Bu doğruysa, her veri yolu için birden fazla kayıt olacak, bu nedenle her veri yolu ile yalnızca bir durak ilişkilendirilebilir. Ayrıca, her durak için birden fazla kayda sahip olmayacağınızdan, her durakta yalnızca bir şehir ilişkilendirilebilir. Dolayısıyla, her otobüs yalnızca iki şehir kurmayı düşünürse bile, ilişkiden ilişkiyi ifade edemezsiniz.

Bunu düzeltmenin iki yolu vardır. C B aracılığı A'dan giderken, sen aslında bunları bağlayan aynı otobüs olsun umurumda değil, bu

Bus - id, companyid, originid, destinationid 

tanımlamak yeterli olacaktır ve Durdurma tabloyu ortadan kalkmasını sağlar. Böylelikle, bir gezgin Roma'dan Viyana'ya tüm mevcut bağlantıları alabiliyordu, ancak Floransa'daki bir zincir için, oradaki otobüsleri değiştirmeyi mi yoksa sadece sessizce oturmaya devam edip etmeyeceğini bilemezdi.

Eğer Dur nesneleri bir güzergah açıklamak istiyorlarsa, dizi özellik 0 veya 1 yukarı, şehirler bu otobüs ile dokundu gelen, saymak olacaktır yapısını

BusStop - id, busid, cityid, sequence 

olurdu.

Modelinizin eksik olabileceği başka bir şey de mesafeler veya seyahat süreleridir. Roma'dan Viyana'ya Viyana'dan bir bağlantı olabilir, ama çok çekici olacağını sanmıyorum. Havayolları bazen bu tür bir zig-zag rotası sunar, ancak otobüsler için pratik olmayabilir. Benzer bir gözlem, bağlantı veriyolunun bekleme süreleri için de geçerlidir. Floransa'dan Venedik'e, Venedik'e, Klagenfurt'a ve Graz'a Viyana'ya gitmek güzel olabilir, ama bir sonraki otobüs için bu yerlerin her birinde 2 gün beklemek demek, bisiklet kullanmak iyi bir alternatif olabilir. Bunlar gibi gereksinimler, çok daha karmaşık veri modellerine yol açabilir.

+0

Merhaba downvoter, biraz yapıcı eleştiri vermek ve neyin iyileştirilmesi gerektiğini bize söylemek ne olacak? – TAM