SORU
29 EKİM 2008, ÇARŞAMBA


Normalleşme (veya Normalleştirme) nedir?

Neden veritabanı çocuklar normale dönmesi hakkında ne olacak?

Ne oldu? Nasıl yardımcı oluyor?

Veritabanları dışında bir şey için geçerli mi?

CEVAP
29 EKİM 2008, ÇARŞAMBA


Normalleşme temel olarak yinelenen bu tür bir veritabanı şema tasarımı ve gereksiz verileri önlenir. Eğer veri bir parça veritabanında birkaç yerde yineleniyor, bir yer ama diğer veri bozulmasına yol olarak güncellenir o riski vardır.

1 normalleştirme düzeyleri çok sayıda var. 5 üzerinden normal form. normal form. Her normal form bazı sorunla kurtulmak için nasıl, genellikle fazlalık açıklar.

Bazı tipik normalleştirme hatalar:

(1) bir hücreye Sahip birden fazla değer. Örnek:

UserId | Car
---------------------
1      | Toyota
2      | Ford,Cadillac

"Araba" sütun bir dize olan) bazı değerler var. burada Her bir hücre tek bir değer olması gerektiğini söyleyen ilk normal form, rahatsız ediyor. Bu sorunu hemen arabanın başına ayrı bir satır var normalize edebiliriz:

UserId | Car
---------------------
1      | Toyota
2      | Ford
2      | Cadillac

Bir hücrede birden fazla değer olması ile sorun, sorgusu için güncelleme zor için zor olmasıdır, ve geçerli dizinler, kısıtlamaları ve benzeri olamaz.

(2) yedek anahtar olmayan verileri (örn. veri gereksiz yere birkaç satır içinde tekrarlanan). Örnek:

UserId | UserName | Car
-----------------------
1      | John     | Toyota
2      | Sue      | Ford
2      | Sue      | Cadillac

Bu tasarım adı her zaman kullanıcı Kimliği tarafından belirlenir rağmen her sütunun başına tekrarlanan, çünkü bu bir sorundur. Bu teorik olarak olası veri bozulması olduğu bir sırada Dava ve diğer değil, adını değiştirmek için yapar. Sorun iki tablo bölme ve yabancı anahtar ilişkisi: birincil anahtar oluşturma tarafından çözüldü

UserId(FK) | Car               UserId(PK) | UserName
---------------------          -----------------
1          | Toyota            1          | John
2          | Ford              2          | Sue
2          | Cadillac

Şimdi biz hala Kimliği tekrar tekrar, çünkü gereksiz veri var; PK/FK kısıtlama değerleri bağımsız olarak güncellenen olamaz sağlar, bütünlüğü güvenli olduğunu, bu yüzden Ancak gibi görünebilir.

Önemli?Evet, öyleçokönemli. Normalleştirme hataları ile bir veritabanı sağlayarak, veritabanına geçersiz veya bozuk veri alma riskini açın. Çünkü veri "hayatlarını sonsuza dek" çok zor veritabanına girmiş ilk bozuk veri kurtulmak için.

Normalleştirme korkma. Normalleştirme seviyesinin resmi teknik tanımları oldukça geniş. Normalleştirme karmaşık bir matematiksel işlem gibi ses yapar. Ancak, normalleşme temelde sadece sağduyu ve veritabanı şema sağduyu kullanarak tasarım genellikle tamamen normalize olacağını göreceksiniz.

Normalleştirme etrafında yanlış bir dizi vardır:

  • bazı normalize veritabanları yavaş olduğuna inanıyoruz, ve denormalization performansını artırır. Bu çok özel durumlarda doğru ancak. Genellikle normalleştirilmiş bir veritabanı da hızlı olur.

  • bazen normalleştirme kademeli bir tasarım süreci olarak tanımlanır ve karar vermek zorunda durdurmak için "ne zaman". Ama aslında normalleşme seviyeleri sadece belirli problemlere farklı bir tarif. Sorun 3 NF yukarıda normal formlar tarafından çözüldü ilk başta çok nadir sorunlar, şans şemanız 5NF olduğunu.

Veritabanları dışında bir şey için geçerli mi?Doğrudan değil, hayır. Normalleştirme ilkelerine ilişkisel veritabanları için oldukça özeldir. Ancak genel temel tema farklı örneklerini senkronize eğer yinelenen veri vermemeliydin - genel olarak uygulanabilir. Bu temelde DRY principle.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blue Lightning TV

    Blue Lightni

    9 EKİM 2011
  • kimberly p

    kimberly p

    23 Ocak 2010
  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008