• 23-06-2010, 20:56:08
    #1
    Merhaba arkadaşlar.

    Düz veritabanı kullanmayı az çok buradaki herkes biliyor.
    Gelen veriyi tabloya yaz, bu verileri sayfada listele, veriyi güncelle, satırı sil.

    Çoğu basit uygulamada da baya baya işimize yarıyo zaten.
    Ama yeri geliyo öyle bir işlem yapmamız gerekiyor ki normal kayıt tutmak yetersiz kalıyor.
    Öyle bir mantık kurmak gerekiyor ki, onu da akıl almıyo bazen...

    Bu konuda, bir işlemin yapılması için kullanılması gereken veritabanı metotlarını yazmanızı rica ediyorum.
    Ayrıyetten kaynak bilen varsa belirtebilir. (Türkçe olacağını zaten zannetmiyorum ama ingilizce vardır sanırım)
    Böylece daha veritabanını daha etkili kullanabilir, nimetlerinden daha fazla ve hızlı yararlanabiliriz.

    Bu konuyu açmaya da şuradan geldim:
    Bir otel rezervasyon sisteminde, otel yöneticisine şu şekilde bir tablo sunuluyor:

    Burada otel yöneticisi, oda türüne göre tam geçerli bir fiyat verebiliyor, belirli tarihler arasında belirli oda türüne bir fiyat verebiliyor (indirim, kampanya v.s.) belirli bir tarihten sonra fiyatlarım şu şekilde yükselsin diyebiliyor.
    Bunların veritabanı yapısı nasıldır acaba diye düşündüm ve kafam baya karıştı
    Veritabanı dünyasının apayrı bir dünya olduğunu bildiğimden, tecrübesi olanların bilgi paylaşmasını rica ediyorum.

    Herkese faydalı olması dileğiyle..
  • 23-06-2010, 22:01:43
    #2
    Eposta Aktivasyonu Gerekmekte
    Böyle bir ödevim vardı T-SQL kullanarak otel veritabanı tasarımı.
    Resimlerini çekip aktarıyım birazdan yardımcı olacaktır.

    Karışık gerçekten ancak temeli oturtunca karışıklıktan ziyade zevkli olmaya başlıyor.
    Bol bol inner join, between,Sum,count kullanılıyor. Yani oracle yada sql server gibi hızlı ve sağlam bir veritabanı kullanmak gerekiyor, gerçekten çok yorucu bir sistem.(sql server veritabanı değil gerçi sunucu ama T-Sql olabilir.)
  • 23-06-2010, 22:46:45
    #3
    Eposta Aktivasyonu Gerekmekte
    Böyle birşeyi kim yapar ? ama ben yapıyım 1 kere

    tatil [DOT] com - Örnek alarak yapmıştım. Tabiki daha eksikleri var, tam bitiremedim.

    Tablo yapısı




    Tablolar
    Tabloların benzer olanlarını çekmedim isimlerden anlarsınız





































    Basitten ileriye sql sorgularının kullanımınıda burda paylaşnıştım

    https://www.r10.net/php/642237-t-sql-...kullanimi.html

    Bu bir örnektir. Mantık bu şekilde ama tabiki dahada detaylandırmak ve basitleştirmek lazım.
    Gelştirmek sizin elinizde
  • 23-06-2010, 22:54:42
    #4
    Güzel oldu bu
    Teşekkürler uğraşınız için.
    Umarım bir çok kişi faydalanır.
  • 24-06-2010, 22:14:21
    #5
    Eposta Aktivasyonu Gerekmekte
    Rica ederim. Son halini fırsat bulup bitirdiğimde paylaşırım.
  • 24-06-2010, 22:40:13
    #6
    Son 4 gündür bunun ile uğraşıyorum ki yaptım sonunda

  • 25-06-2010, 18:26:11
    #7
    RedZ adlı üyeden alıntı: mesajı görüntüle
    Son 4 gündür bunun ile uğraşıyorum ki yaptım sonunda

    veritabanı yapınız çok gizli mi peki?
  • 25-06-2010, 18:55:10
    #8
    Şimdi Flowchart denen çalışma yapısını kurman gerekiyor ilk başta kağıdı kalemi eline alıyorsun Her odaya ait özellikleri yazıyorsun.

    Oda yapısı

    1. Oda no
    2. Oda türü (luks kral dairesi vs)
    3. Odada MAX kişi sayısı

    Diyelim ki oda nın bütün özellikleri bunlar daha fazla konabilir ama kimsenin kafası karışmasın.

    sonra zamanlara geçelim

    Zamanlar tablosu
    1. High Season denen TR de yaz , Avrupada Kış dönemi
    2 Low Season (Bu sezonda fiyatlar ucuzlar bizde kış Avrupada Yaz)
    3. Normal Season (bu kullandığım terimler turizm terimleridir.)

    Zamanlar tablosu nasıl olur

    1. oda no
    2. oda fiyat
    3. oda season u (gerekirse)

    Şimdi elimizde ne var... 2 tane tablo ve bu 2 tablo birbirine bağlı , şimdi 3. tablomuz yani rezervasyon.


    Rezervasyon tablosu

    1. Oda no
    2. Reservasyonu Yapan Kişi
    3. Rezervasyon tarihleri
    4. Gerekirsede Gün sayısı (bunu SQL'de de tutabilirsiniz isterseniz KOD ile anlık gösterebilirsiniz)

    Şimdi veritabanımızın çalışma yapısına geri dönüyoruz.

    1. Çalışma Şekli Oda numarasına göre

    Oda numarası girilir, Sistemden oda özellikleri çekilir, ve çekilen bu verilere rezervasyon bilgileri eklenir (REzervasyon tarihleri veri tabanında bulunduğu için gerekli kod ile oda dolumu boşmu veritabanından gelen verilere göre listelenir).

    2. Sezonlara göre

    zaman tablosundan high veya low istediğiniz sezon çekilir oda numarasına göre fiyat vs vs listelenir. önemli olan tabloları birbirine bağlayabilmek.

    3.Tarihe göre

    Her oda için her günlük rezervasyonları satır satır tutmak yerine (yani 25 haziran 26 haziran 27 haziran için tek tek satır oluşturmak yerine) her rezervasyon başı 1 er satır oluşturmak veri tabanının boyutunu ve performansını arttıracaktır.

    Şöyle bir durum düşünün...

    1 kişi 15 günlük rezervasyon yapıyor.
    eğer bunları 25 26 27 haziran vs gibi 15 satırda saklarsanız 1 kişinin rezervasyonu için 15 satıra ihtiyacımız oluyor. düşünün 300 odalı otelde 300 kişi rezervasyon yaptırdı. 4500 kayıt gerekiyor.

    ama bu verileri giriş(check in) 2010-06-25 çıkış (check out) 2010-07-10 gibi tek satırda tutarsanız kayıt sayısı 300 e düşecektir ve SQL sorgunuzda sadece 1 BETWEEN komutu ile gerekli veriye hemen ulaşabilirsiniz. hem gerekli kayıtların raporlarını almak hemde kayıtları organize bir şekilde tutmak kolaylaşacaktır ve üstteki örnekten tam 15 kat olmasa bile çok büyük bir performans sağlayacaktır.

    Sonuç olarak anlatmak istediğim kısa kod her zaman en hızlı değildir. Bir sitenin alt yapısını oluştururken nelere ihtiyacınız var nelere yok bunlara iyicene karar vermeniz , veritabanı dizaynında gerçekten işinde uzman birine danışmanız (ki Yurtdışında bu ayrı bir iş dalı olarak sayılıyor). Kendi ölçeklemenizi yapmanız gerekiyor.

    Genel çalışma prensibini anlatmak istedim. Mantığını kavramadan ilerisi gelmiyor. Ki bu konuda çok hata yaptım ve sonra çok uğraştım düzeltmek için umarım size bir fikir verebilmişimdir çalışma konusunda.

    Eğer Veritabanı veya php konusunda sorunuz olursa gerekli bölüme açarsanız veya acil ise PM ile ulaşırsanız yardımcı olabilirim. Saygılar.
  • 25-06-2010, 19:16:42
    #9
    akadal34 adlı üyeden alıntı: mesajı görüntüle
    veritabanı yapınız çok gizli mi peki?

    Hayır değilde özel script olduğundan vermem etik olmaz.