none
2 Tabloya veri kaydetme RRS feed

  • Soru

  • Merhaba arkadaşlar,
    bir iş başvuru formum var.
    bu formda iş tecrübelerini databasede nasıl tutmamı tavsiyr edersiniz ?
    Yani tabloda bütün verilerimi,yoksa tecrübeler,referanslar,alınan kurslar vs her biri için ayı ayrımı olması daha iyi.


    7 Ekim 2013 Pazartesi 07:42

Yanıtlar

  • Serkan Bey,

    En basit yaklaşım olarak herhangi bir orm kullanmadığınızı da varsayarak db tarafında bulunan tabloların business karşılığı olan objectlerini oluşturabilirsiniz. Client tan aldığınız dataları bu objectlere doldurduktan sonra önerebileceğim transaction kullanmak olabilir transaction ı uygulama tarafında da database tarafında da tasarlayabilirsiniz bu size kalmış bir konu. Uygulama tarafında biraz daha zahmetli olabilir ilişkili tablolar olduğu için birisi insert edildiğinde onun idsini alıp diğer tabloya göndermeniz gerekecektir işte bunları database tarafında gerçekleştirmek bence bu ihtiyaç için daha uygun olabilir.

    Database için bir procedur yapmanız ve tüm parametleri bu procedur'e göndererek tek bir procedure de kayıt işleminizi tamamlamanız probleminizi çözebilir diye düşünüyorum.

    Faydalı olması dileğiyle..

    • Yanıt Olarak İşaretleyen Serkan Tepe 7 Ekim 2013 Pazartesi 12:47
    7 Ekim 2013 Pazartesi 10:55

Tüm Yanıtlar

  • Ayrı ayrı olması gerekiyor. Bazı durumlarda 3. bir tabloya da ihtiyaç olur. Örneğin yabancı diller için;

    Kişi Tablosu
    Id
    Ad
    Soyad
    .
    .

    YabancıDiller Tablosu
    Id
    YabancıDil

    KişilerDiller Tablosu
    Id
    KişiId
    YabancıDilId

    gibi


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC


    7 Ekim 2013 Pazartesi 08:03
    Moderatör
  • Merhaba Serkan Bey,

    Tüm verilerinizi atomik düzeyde sql normalizasyon kuralları çerçevesinde tutmanızı tavsiye ederim.

    Örneğin tecrübeler için ayrı bir tablo olması gerektiği gibi referanslar için de ayrı bir tablo oluşturulmalıdır.

    Referanslar tablosu içerisinde de referansın tüm bilgileri ayrıştırılırsa  sorgulama aşamasında daha detaylı ve düzgün sorgu hazırlayabilmeniz açısından iyi olacaktır ; örneğin referansın adı ve soyadı ayrı ayrı kolonlarda tutulması.

    Normalizasyonun en kısa tanımı verilerin düzenli olarak tutulmasını sağlayan kurallar topluluğudur. Bu kuralları inceleyecek olursak ;

    1NF :  Tekrarlanan sutun yapılarını ortadan kaldırmak gerekir ve bir kolonda yalnızca bir veri olmalıdır.

    2NF : Kilit özelliğine sahip sutunlar Primary Key'lerle tam bağımlı olmalıdır.

    3NF : Kısmi bağımlılık ortadan kaldırılmalı ve tablo içerisindeki anahtarsız alan bir başka tablodaki anahtarsız alana bağımlı olmamalıdır

    Son olarak da tablolar arası ilişkilere dikkat edilmelidir.

    7 Ekim 2013 Pazartesi 08:08
  • Merhaba Sercan bey,

    tavsiyeniz çok güzel,
    bunu webform tarafında bir adet button ile nasıl database'e kaydedebiliriz.bu konuda yardımcı olabilirmisiniz.

    7 Ekim 2013 Pazartesi 08:15
  • Databaseinizin ne oldugunu soylememissiniz. Tablo dediginize gore buyuk ihtimalle MS SQL server, PostgreSQL, MySQL ... gibi SQL serisi bir database. O zaman ayri ayri tablolarda iliskili olarak tutmaniz gerekiyor. Bunun icin normalizasyon konusunu inceleyin (http://en.wikipedia.org/wiki/Database_normalization). Hazir database semalari da var (http://www.databaseanswers.org/data_models/).

    Eger NoSQL database kullaniyorsaniz, cogunda bunun icin tek 'tablo' - koleksiyon kullanmaniz hem yeterli hem uygun.

    7 Ekim 2013 Pazartesi 10:25
  • Serkan Bey,

    En basit yaklaşım olarak herhangi bir orm kullanmadığınızı da varsayarak db tarafında bulunan tabloların business karşılığı olan objectlerini oluşturabilirsiniz. Client tan aldığınız dataları bu objectlere doldurduktan sonra önerebileceğim transaction kullanmak olabilir transaction ı uygulama tarafında da database tarafında da tasarlayabilirsiniz bu size kalmış bir konu. Uygulama tarafında biraz daha zahmetli olabilir ilişkili tablolar olduğu için birisi insert edildiğinde onun idsini alıp diğer tabloya göndermeniz gerekecektir işte bunları database tarafında gerçekleştirmek bence bu ihtiyaç için daha uygun olabilir.

    Database için bir procedur yapmanız ve tüm parametleri bu procedur'e göndererek tek bir procedure de kayıt işleminizi tamamlamanız probleminizi çözebilir diye düşünüyorum.

    Faydalı olması dileğiyle..

    • Yanıt Olarak İşaretleyen Serkan Tepe 7 Ekim 2013 Pazartesi 12:47
    7 Ekim 2013 Pazartesi 10:55
  • Teşekkür ederim verdiğiniz bilgiler için.
    7 Ekim 2013 Pazartesi 12:47
  • database tarafında birinci tabloya kayıt işlemi bittikten sonra id sini alıp ikinci tablaya nasıl ekleyebiliriz
    7 Ekim 2013 Pazartesi 14:32
  • database tarafında birinci tabloya kayıt işlemi bittikten sonra id sini alıp ikinci tablaya nasıl ekleyebiliriz
    bende aynı dertten buraya başvurdum,ancak henüz çözmüş değilim.
    7 Ekim 2013 Pazartesi 14:49
  • Database'inizin ne oldugunu siz de soylememissiniz :)

    SQL server ise inserted tablosundan eklenen id'yi alabilirsiniz.

    DECLARE @id TABLE (id INT);
    insert into tabloAdi (baskaAlan) 
      OUTPUT INSERTED.tabloId INTO @id 
      values (@baskaAlan);
    SELECT id FROM @id;
    

    http://social.msdn.microsoft.com/Forums/tr-TR/5a6ec9f8-339f-445e-a292-473f8df52593/procudure-iinde-insert-ilemleri?forum=sqltr

    UniqueIdentifier kullanirsaniz, almaniza gerek kalmaz onceden siz verebilirsiniz (ancak uniqueidentifier pek anlasilmadigindan olsa gerek buna karsi cikan cok var).

    Linq ile de SubmitChanges ya da SaveChanges sonrasi objenin ID alanini control edebilirsiniz.

    NoSQL database kullaniyorsaniz zaten almaniza gerek yok, gene de almak isterseniz basitce insert ettiginiz nesnenin ID alanina bakin property olarak.

    7 Ekim 2013 Pazartesi 15:42
  • sql server kullanıyoruz.

    a tablosunda

    id, adi, soyadi var

    b tablosunda ise

    id, ida, adres,tel var

    a tablosuna kayıt yapıldığında b tablosuna da kayıt yapılmasını istiyoruz. Şimdi hangi tabloda iken ne yapmalıyız

    7 Ekim 2013 Pazartesi 17:14
  • Tamam o zaman verdigim linkteki ornege bak.
    7 Ekim 2013 Pazartesi 21:22