SORU
1 EKİM 2008, ÇARŞAMBA


Karşı benzersiz nesne bileşik birincil anahtar KİMLİĞİ alanı

Bir veritabanı kompozit tuşları benzersiz nesne KİMLİĞİ alanını kullanarak çok daha ideal olan ve bir veritabanı oluştururken, tek bir KİMLİĞİ olması gerektiği fikri bana miras kaldıaslabirincil anahtar olarak kullanılabilir. Çünkü ben bir binanın Raylar ön uç için bu veritabanı rastladım zorluklar almak için uygun Raylar kuralları (gerçi oldu Olası kullanarak özel görünümler ve bir kaç ek mücevher kolu kompozit tuşları).

Arkasındaki mantık bu özel şema tasarımından kişi kim yazdı bunu yapmak zorundaydım nasıl veritabanı kolları ID alanda da verimli olmayan bir şekilde ve zaman, dizin oluşturma, ağaç türlü kusurlu. Bu açıklama hala kavramı kafamda bir yere oturtmaya çalışıyorum herhangi bir derinlik ve (bileşik anahtarları, ama zaman 0 kullanarak aşina değilim) yoktu.

Herkes fikirlerini sunabilir veya bu konuya daha fazla derinlik katmak?

CEVAP
1 EKİM 2008, ÇARŞAMBA


Yaygın olarak kullanılan motorlar (MS SQL Server, Oracle, DB2, MySQL, vb.) olmaz deneyim fark sorunları yedek anahtar sistemi kullanarak. Hatta bazıları, suret kullanımı performans artışı yaşayabilirsiniz, ama performans sorunları platforma özel cihazlardır.

Genel anlamda, doğal anahtarı (ve uzantısı, bileşik anahtar) yedek anahtarı tartışma “” gözünde. doğru cevap hayır muhtemelen uzun bir geçmişi vardır ayetler

Doğal anahtarlar için bağımsız değişkenler () tekil veya bileşik genellikle bazıları şunlardır:

1)Zaten veri modeli mevcuttur.Birçok varlık modellenen zaten bir veya daha fazla öznitelik ya da ilişki yaratma amaçlı bir anahtar ihtiyaçlarını karşılayacak nitelikler kombinasyonları vardır. Her tablo için ek bir öznitelik eklemek, gereksiz bir fazlalık içerir.

2)Bazı birleşimler için ihtiyacı ortadan kaldırmak.Örneğin, müşteriler ile müşteri kodları ve fatura ile fatura numaraları (her ikisi de hangi "doğal" tuşu) ve istediğiniz almak için tüm fatura numaraları için belirli bir müşteri kodu, sadece kullanın. "SELECT InvoiceNumber FROM Invoice WHERE CustomerCode = 'XYZ123'". Klasik yedek anahtar yaklaşım, SQL bu gibi bir şey olacaktır: "SELECT Invoice.InvoiceNumber FROM Invoice INNER JOIN Customer ON Invoice.CustomerID = Customer.CustomerID WHERE Customer.CustomerCode = 'XYZ123'".

3)Bir daha evrensel olarak geçerli veri modelleme yaklaşımı da katkıda bulunurlar.Doğal tuşları ile aynı tasarım büyük ölçüde değişmeden farklı bir SQL motorları arasında kullanılabilir. Birçok yedek anahtarı yaklaşımları anahtar üretimi için belirli bir SQL motoru teknikleri, böylece veri modeli daha çok uzmanlık gerektiren farklı platformlarda uygulamak için kullanın.

Yedek anahtarlar için bağımsız değişkenleri SQL motoru özgü sorunları etrafında eğilimindedir:

1)İş gereksinimleri kuralları değiştirme/zaman öznitelikleri için daha kolay değişiklik sağlar.Bu veri öznitelikleri tek bir tablo için izole edilmesi için izin çünkü. Öncelikle bu verimli Alanları gibi standart SQL yapıları uygulayan SQL motorları için bir sorun. Bir öznitelik ETKİ alanı bir ifade ile tanımlanır, öznitelik değişiklik şema-geniş ETKİ alanı ALTER deyimi kullanarak yapılabilir. Farklı SQL motorları farklı performans özellikleri için değiştiren bir etki alanı ve bazı SQL motorları yapmak değil uygulamak ETKİ, tüm veri modeller telafi etmek için bu durumlar ekleyerek yedek anahtarları yapma yeteneğini geliştirmek için yapmak istediğiniz değişiklikleri bağlıyor.

2)Doğal anahtarları daha eşzamanlılık daha kolay uygulamaları sağlar.Doğal anahtar durumda, eğer iki kullanıcı aynı anda çalışma ile aynı bilgi kümesi gibi bir müşteri satır, ve bir kullanıcı değiştirir doğal anahtar değer, daha sonra bir güncelleme ile ikinci kullanıcı başarısız olacaktır, çünkü müşteri kodu olduklarını güncelleme artık yok veritabanında. Yedek anahtarı durumunda, güncelleme değişmez KİMLİĞİ değerleri veritabanındaki satır, değişken müşteri kodları tanımlamak için kullanıldığından başarıyla işleyecektir. Ancak, değil her zaman arzu izin ikinci güncelleme – eğer müşteri kodu değiştirilir Olası ikinci bir kullanıcı olmaması gerekir devam etmek için izin verilir ile değiştir çünkü gerçek “kimlik” satır değişti – ikinci kullanıcı olabilir güncelleme yanlış satır. Yedek anahtarları ne doğal ne tuşları, kendileri tarafından, bu sorunu gidermek. Eşzamanlılık kapsamlı çözümleri anahtar uygulaması dışında ele alınması gerekiyor.

3)Doğal tuşları daha iyi yaparlar.Performansı en doğrudan SQL motoru tarafından etkilenir. Aynı veritabanı şema aynı donanım farklı SQL motorları kullanarak uygulanan sıklıkla önemli ölçüde farklı performans özellikleri, veri depolama ve alma mekanizmaları SQL motorları sayesinde olacaktır. Bazı SQL motorları yakından yaklaşık aynı özniteliği, bir Müşteri Kodu gibi veritabanı şeması içinde birden fazla yerde göründüğünde veri aslında depolandığı düz dosya, işletim sistemleri. SQL motoru bu yedek depolama değişiklikleri verilere yapılması gerektiğinde veya şema performans sorunlarına neden olabilir. Diğer SQL motorları veri modeli ve raf sistemi, veri ve şema daha hızlı değişiklikler için izin arasında daha iyi bir ayırma sağlar.

4)Yedek anahtarları iyi bir veri erişim kütüphane ve GUI çerçeve ile çalışır.Nedeniyle homojen doğanın en yedek anahtarı tasarımları (örnek: tüm ilişkisel anahtarlar tamsayılar), veri erişim kütüphaneler, ORMs ve GUI çerçeve ile çalışmak bilgisi olmadan gerek özel bilgi veri. Doğal anahtarları, heterojen doğası (farklı veri türleri, boyutu vb.) nedeniyle, de otomatik ya da yarı otomatik araçlar ve kütüphaneler ile çalışmaz. Özel senaryolar, gömülü SQL veritabanı gibi, aklınızda belirli bir araç ile veritabanı tasarımı kabul edilebilir. Diğer senaryolar, veritabanları, kurumsal bilgi kaynakları, erişilen aynı anda çoklu platformlar, uygulamalar, rapor sistemleri ve cihazları, ve bu nedenle değil işlev olarak iyi tasarlanmış bir odak üzerinde belirli bir kütüphane veya çerçeve. Buna ek olarak, veritabanları özel araci ile çalışmak üzere tasarlanmış yeni bir araç başlanan bir sorumluluk haline gelir.

Doğal tuşların yan (belli ki) düşmek eğilimindedir, ama bu konuda fanatik değilim. Nedeniyle çevre çalışıyorum, herhangi bir veritabanı tasarımı yardımcı olabilir kullanılan çeşitli uygulamalar kullanıyorum doğal anahtarlar için çoğunluğun veri modelleme ve nadiren tanıtmak Suretler. Ancak, yolumdan yeniden uygulamak için Suretler kullanan veritabanlarında denemek için gitmiyorum. Yedek anahtar sistemleri sadece iyi çalışır – zaten iyi işleyen bir şeylerin değişmesi gerek.

Bazı mükemmel kaynakları her yaklaşımın yararları tartışmak

http://www.google.com/search?q=natural key surrogate key

http://www.agiledata.org/essays/keys.html

http://www.informationweek.com/news/software/bi/201806814

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • androidandme

    androidandme

    10 Mart 2009
  • MandMEvangelists

    MandMEvangel

    28 Ocak 2008
  • My Name Is Jeff

    My Name Is J

    26 ŞUBAT 2008