2016-04-17 55 views
6

Şu anda bir veritabanı tasarlamaya çalışıyorum ve nesnelerimden birinin dinamik olarak boyutlandırılmış bir dizi alanına yaklaşmanın en iyi yolu hakkında emin değilim. İlk düşüncem, bir dizi tamsayıyı depolamak için nesnemin içinde bir sütun kullanmak. Ancak daha çok okudum, bence bu en iyi seçenek değil. Beton örneği bilge, bir tam sayı ile temsil edilen birçok öğeye 0 depolayan bir oyuncu nesnesine sahibim. Bunu temsil etmenin en iyi yolu nedir?Bir ilişkisel veritabanında dizinin saklanmasının en iyi yolu nedir?

cevap

10

Bu değerler koleksiyonu atomik ise, bunları birlikte depolayın. Anlamı, eğer grubun tamamını önemsiyorsanız, eğer iç içe geçmiş değerleri aramazsanız ve asla iç içe değerlere göre sıralama yapmazsanız, bunlar tek bir alan değeri olarak birlikte saklanmalıdır.

Değilse, bunlar ayrı bir tabloda depolanmalıdır, her değer bir satır getirir, her biri diğerinin bir grubun "sahibi" olan bir kayıttaki ana kimliğini (yabancı anahtar) atar. Örneğin, bir analiz için bir koleksiyon olarak sadece bir arada kullanılan bilimsel bir enstrümanın bir okuma kümesinin bir alanda birlikte saklanması gerekir. Örneğin; Bunun aksine, bir müşteri için sık sık sorgulanması gereken bir müşteri için telefon numaralarının bir listesi, ilgili bir çocuk masasında muhtemelen her satırda tek bir telefon numarasına bölünmelidir.

Daha fazla bilgi için "veritabanı normalleştirmesi" terimini arayın.

Bazı veritabanları, veri türü olarak bir diziyi destekler. Örneğin, Postgres bir sütunu tek boyutlu bir dizi veya iki boyut dizisi olarak tanımlamanıza olanak tanır. Sütun tanımının bir türü olarak diziyi desteklemiyorsa veritabanı, o zaman üç alternatifi olma ihtimali varsa

:

  • XML/JSON veritabanı veritabanı eğer
    bir XML veya JSON belgeye size veri toplama Transform bu tür destekler. Örneğin, Postgres, XPath kullanarak XML'in depolanmasını, alınmasını ve dizine eklenmemiş aranması için temel desteğe sahiptir. Ve Postgres, gelen JSON'un ayrıştırıldığı ve dahili olarak tanımlanmış bir ikili biçimde depolandığı jsonb veri türü ile iç içe geçmiş değerler üzerinde dizinlenmiş destek içeren bir veri türü olarak JSON için mükemmel endüstri lideri bir destek sunar. Bu özellik, kullanıcıların "NoSQL" sistemlerini kullanmayı düşündükleri, semi-structured data numaralı telefonu saklamak ve aramak için kullandıkları ana nedenlerden birini ele alır.
  • Metin
    Verilerinizi metin olarak saklamak üzere dize olarak temsil edilir.
  • BLOB
    BLOB olarak depolamak için bir ikili değer oluşturun.
İlgili konular