Şimdi Ara

MS Sql Tablo İlişkileri Hakkında Yardım..

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
15
Cevap
1
Favori
3.461
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar.. Okulda arkadaşımla bi proje yapıyoruz, oto kiralama takip sistemi. Bunun için veritabanını ve tablolarımızı oluşturduk fakat ilişkilendirmede veya tablolarda bir eksiklik var mı yardımcı olursanız sevinirim.
    Teşekkürler..

     MS Sql Tablo İlişkileri Hakkında Yardım..



  • soldan sağa söyliyim.
    1 kişinin 1 ehliyeti olur. bu yuzden musteri ehliyet bilgi tablosundaki musteriID yi kaldır . onu ehliyetID yap. sonra musteri tablosuna ehliyetID olarak ekle o Musteri tablosunda FK olsun. ve ehliyetin sınıfını ekle a mı b mi E mi.
    pasaport içinde aynı şeyi söyleyeceğim. pasaportID oluştur ve müşteyie de passaport ID ekle o da FK olsun.
    aynı şeyi Müşteri nufus bilgi için de soyleyebilirim. mısteri nufus bilginin primary keyi MusteriNufusBilgiID olsun. müşteri tablosuna da 1e1 iişkili MusteriNufusBilgiID FK olsun.
    araçkirala tablosu da sıkıntılı . ona da AraçkiralaId ata primary key olarak. araçno ve müşteri no bu tabloya FK olarak gelsin. bire çok olarak. sonucta bir kişi aynı arabayı birden falza kiralayabilir.
    Araç Rezerve ok.

    yazılım dili olarak ne kullanmayı düşünüyorsunuz ?
  • Yardımın için çok teşekkür ediyorum. Dediklerini hemen uygulucam tabi önce kendime yorumlayıp anlamam lazım :). Programlama dili olarak C# kullanıcam. Visual Studio'da görünümü falan hepsini oluşturdum. Raporlama kısımları falan var. Kasa giriş-çıkış kısımlarım falan var. Bunu hallettim mi gerisinin geleceğini düşünüyorum zaten.

    Bu arada birşey daha sormak istiyorum. Ben mesela aracı kiraya verdiğimde araçlar tablosunda görünmemesi lazım. Bunun için arac_kontrol diye bir tablo oluşturup kiraladığım araçları oraya kaydetsem mi yoksa daha kısa bir yöntemi var mıdır?
  • onu sorguda halletmen gerek. birde şimdi gördüm de Araç kirala tablosunda kiralama saati kiralama tarihi teslim tarihi gibi parametreler çok gereksiz. kiralanan araç parametresi ve alınan ücret de gereksiz. araç kiralama tablosunda sadece araçID musterıID ve tarih koyman gerekli. ve birde isteğe bağlı olarak faturaId koyup tüm faturaya dair bilgileri fatura tablosunda tutabilirsin. faturaID de arac_kirala tablosuna FK olarak gider. şimdi anlatmak istediğimi açarsak ,

    ben 20 mart 2012 de saat 18:00 da araç kiralayacağım . 24 mart 2012 de saat 14:00 da teslim edeceğim. AracKirala tablosunda kayıtlar şu şekilde tutulmalı (araçID musterıID ve tarih ve faturaID parametreleri oldugu düşünülürse sırasıyla )
    aracıd musteriıd tarih faturaID
    "3" "15" "20-03-2012 18:00" 5
    "3" "15" "21-03-2012 00:00" 5
    "3" "15" "22-03-2012 00:00" 5
    "3" "15" "23-03-2012 00:00" 5
    "3" "15" "23-03-2012 14:00" 5

    fatura kısmını yaratırken de zaten kiralama tarihinden teslim tarihine kadar olan sürenin 4 gun oldugunu biliyorsun. faturayı yaratırken aracın fiyatını da biliyorsun. araba fiyatı 80 dedin 4 gun kira 320 tl fatura fiyatı. faturanın zaten müşteriID parametresi de olacağı için faturayı yaratırken faturadaki müşteri bilgilerini de biliyorsun
    sonra ben merak ettim 15 marttan 25 marta kadar kiralamayamüsait araçları getirmek istedim
    select * from arac_kirala where where tarih not between '15-03-2012' and '25-03-2012' dediğim anda sql bu tarihler arasında 3 id li aracı görüp getirmeyecektir. diğerlerini getirecektir bu tarihler arasında kiralanan araçları gormek istediğinde ise not between değil sadece between kullanacaksın




  • eh şimdi fatura id yi 5 yazdım ama boyle bir fatura yok . en başından müşteriyi yarattım. müşterimin adı sanı kimlik bilgileri ehliyet bilgileri tamam. araçta hali hazırda yaratılmış durumda. müşteri geldi 2 tarih seçti. okeye bastı. hemen
    select * from arac_kirala where where tarih not between @startdate and @enddate sorgusunu çalıştırdın adama kiralayabileceği bütün araçları getirdin. adam 5 id li aracı seçti. okeye bastı. yukardaki örnekten hemen faturayı oluşturmalısın. 5 idli aracı seçti. aracın fiyatını select ile çektin . enddateden startdateyi çıkardın. diyleimki 4 gun kaldı. 5idli aracın fiyatı X gün sayısı faturanın fiyatı belli oldu. sonra dedin ki
    insert into Fatura (AracID, MusteriID ,Ucret, Create Date) values (5,15,320,"20-03-2012 ) faturayı yarattın mı ID sini out ettin artık faturaID si de elinde belli.
    sonra hemen araC_ kirala tablosuna eklemek üzere bir fonksiyon yazdın.AracKirala() fonksiyonu olsun. bu fonksiyon 4 parametre alıyor ve kayıtları arac_kirala tablosuna ekliyor.

    for(Datetime dt = startDate ; dt<enddate.addays(1); dt.Adddays(1))  
    {
    //neden < enddate.addays(1) yazdık çünkü 24-03-2012 saat 14:00 da teslim edilen tarih 24:03-2012 büyük buyuzden 1 gün sonrası yani 25 inden küçük olmak zorunda.

    //bu if sorgusunu neden yazdık ? çünkü son tarihe teslim saatini de eklemek istiyorum.
    //sonuna neden "00:00:00" ekledim ? çünkü günleri 1 1 arttırırken tarihler hep 00:00:00 olacak
    if(dt == Datetime.parse(enddate.ToshortDateString() + "00:00:00"))
    {
    AracKirala (5,15,enddate,faturaID );
    }
    else
    {
    AracKirala (5,15,dt,faturaID );
    }
    }


    hemen ekledin. proje tamam işte:)



    < Bu mesaj bu kişi tarafından değiştirildi Kaygerya -- 19 Mart 2012; 1:53:05 >




  • tamamdır dediklerini uyguluyorum şu anda. Ama benim anlamadığım şimdi bir müşterinin sadece bir tane ehliyeti olabilir, bunun için bire bir ilişki kurmam gerekli değil mi? senin dediğin gibi müşteri tablosuna ehliyetID yi ekledim ve müşteri_ehliyet_bilgisinde primary key olarak ehliyetID yi ayarladım ve müşteri tablosuna fk olarak bağladım ama bire çok ilişki olmuş oluyo böyle.
  • e ayarlarında 1-1 ilişki yapman lazım. yapamıyorsan da kalsın boyle sorun olmayacaktır.

    1-e çok görünmesinin sebebi muhtemelen sql in 1 ehliyet yarattım ama bu ehliyet 1den fazla kişinin ehliyeti olabilir düşüncesinden kaynaklanıyor.
    yani sql düşünüyor ki 10 id li ehliyet 1 idli müşterinin de ehliyeti olabilir 2 nolu müşterinin de ehliyeti olabilir 3 id li müşterinin de ehliyeti olabilir diye düşünüp bunu yapmakta.



    < Bu mesaj bu kişi tarafından değiştirildi Kaygerya -- 19 Mart 2012; 2:01:28 >
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • Şu an tam olarak senin dediğin gibi değiştirdim veritabanından eğer evet tam böyle olması gerektiği gibi dersen bir kaç soru sormam gerekiyor..
    teşekkür ederim bu arada tekrar yardımların için.


     MS Sql Tablo İlişkileri Hakkında Yardım..



    < Bu mesaj bu kişi tarafından değiştirildi onur3535 -- 19 Mart 2012; 2:16:33 >
  • quote:

    Orijinalden alıntı: Kaygerya

    e ayarlarında 1-1 ilişki yapman lazım. yapamıyorsan da kalsın boyle sorun olmayacaktır.

    1-e çok görünmesinin sebebi muhtemelen sql in 1 ehliyet yarattım ama bu ehliyet 1den fazla kişinin ehliyeti olabilir düşüncesinden kaynaklanıyor.
    yani sql düşünüyor ki 10 id li ehliyet 1 idli müşterinin de ehliyeti olabilir 2 nolu müşterinin de ehliyeti olabilir 3 id li müşterinin de ehliyeti olabilir diye düşünüp bunu yapmakta.

    tamamdır şimdi tam olarak anladım. Hep aklımı karıştırıyodu bu durum!
  • dediğim gibi araç kirala tablosunda gereksiz parametreleri uçur. birde araç rezerve tablosunu uçur. aracı rezerve ederken ftura kesecek misin ? hayır. oyleyse rezerve edilen aracın faturası olmayacaktır. aslında arac_kirala tablosu işini görecektir. çünkü senin kurdugun yapıda. sen rezerve edilmiş bir araçı kiralamaya müsait görebilirsin. yani özetle rezervasyon tablosunu da komple uçur. sen rezerve araçları nasıl goreceksin ? hemen ayzıyorum

    bu kiralamaya müsait araçlar:
    arack kirala tablosunda belirtilen 2 tarih arasında olmayan araçlar. // sorguyu bir ara detaylı düşünürüz
    bu kiralanan araçlar:
    select * from arac_kirala where where tarih between @startdate and @enddate and FaturaID is not null
    bu da rezerve edilen araçlar :
    select * from arac_kirala where where tarih between @startdate and @enddate and FaturaID is null



    < Bu mesaj bu kişi tarafından değiştirildi Kaygerya -- 19 Mart 2012; 10:32:41 >
  • tabiiki bunun için FaturaID nullable olmalı yanı allownull u seç :)

    sen rezerve edilen bir aracı müşteri aracı almaya geldiğinde fatura keseceksin (yaratacaksın) ve rezerve edilen tarihler arasındaki faturası null olan veriyi update ile faturaid ataması yapacaksın



    < Bu mesaj bu kişi tarafından değiştirildi Kaygerya -- 19 Mart 2012; 2:29:55 >
  • dediğin gibi yapınca önümdeki perdeler kalktı. gece gece bu kadar yardım ettin allah razı olsun. takıldığım yer olunca yine bu konuda devam ettiririm. çok teşekkür ederim bu bilgiler için. iyi geceler...
  • rica ederim ^^ bende yatayım yarın falan da ayrdım ederim sen takıldıkça

    benım cümlemi alıntı yaparak sorman gerkeenleri sorarsan donanımhaber bana uyarı verir mesajına alıntı yapıldı diye ordan görürüm .



    < Bu mesaj bu kişi tarafından değiştirildi Kaygerya -- 19 Mart 2012; 2:56:03 >
  • eleştiri olarak algılama lüfen ama mantık hatasına açık şekilde oluşturulmuş tasarim, öngöremediğin sorgu problemlerine açık tasarım.
    yukardaki önerilen düzeltmelerden daha önce, veritabanı normalizasyon 1/2/3 normal form kurallarını incelemen tavsiyem.
  • quote:

    Orijinalden alıntı: xae

    eleştiri olarak algılama lüfen ama mantık hatasına açık şekilde oluşturulmuş tasarim, öngöremediğin sorgu problemlerine açık tasarım.
    yukardaki önerilen düzeltmelerden daha önce, veritabanı normalizasyon 1/2/3 normal form kurallarını incelemen tavsiyem.

    Yok neden yanlış anlayayım. Benim için daha iyi oluyor fikir almak için. Haklısın ilk defa böyle bir projeye girişiyorum. Dediklerini inceleyeceğim. Saolasın
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.