2008-09-28 17 views
12

Bir kayıt için etiket depolamanın en iyi yolu nedir? Sadece bir varchar alanı mı kullanıyorsun? Etiket x içeren satırları seçerken ne olur? Benzer operatörü kullan?Etiketleri bir sql sunucu tablosunda depolamanın en iyi yolu?

Teşekkürler!
1) etiketleri miktarı/etiketli kayıtlar
2) verilerin çok büyük hacimlerde başa sürece

:-) normalleşme üzerinde dini fikre sahip olsun ya da olmasın:

+0

https://elliot.silvrback.com/handling-tags-in-a-sql-database –

cevap

13

iki şey bağlıdır Ben, varchar değerlerini tamsayı tanımlayıcılarına eşleyen bir 'Etiketler' tablosunu, ardından da etiket tablolarına etiketlenmiş ikinci tabloyu eşleme yapmayı öneririm. Bunu ilk önce uygulamanızı öneririm, ardından performans gereksinimlerinizi karşılamıyor mu kontrol edin. Bu durumda, etiketli satır ve etiketin asıl metni için bir kimlik içeren tek bir tabloyu saklayın, ancak bu, optimizer'ın tam bir tablo taraması yapması durumunda, sorgunuzu öldüreceği için bir sütun sütunu kullanmanızı öneririm Varchar sütunu ile büyük bir masa.

+0

katılıyorum, daha sonra etiketleri kolayca yeniden adlandırabilirsiniz. –

+2

Unicode desteği için NVARCHAR veya NCHAR sütununu kullanın, sadece etiketlerde ASCII charter'larını destekleyin. – Horcrux7

3

Hayır, genellikle tek bir alana birden fazla veri parçası koymak kötü bir fikirdir. Bunun yerine, ayrı bir Etiketler tablosu kullanın (belki de bir TagID ve TagName ile) ve daha sonra her kayıt için onunla ilişkili TagID'yi belirtin. Bir kayıt birden fazla etiketle ilişkilendirilmişse, tek farkla TagID olmak üzere yinelenen kayıtlarınız olur.

Bunun avantajı, etikete göre kolayca etiketleme, kaydetme ve Etiketler tablosunu ayrı ayrı tutmanızdır (yani, bir etiket adı değişirse ne olur?). sadece sizin için

+3

Yinelenen kayıtlar da istemezsiniz, bu durumda TagIds ile TagIds'ı RecordIds ile eşleştirmek istiyorsunuz. –

3

izin verilen en küçük birincil anahtara sahip bir etiket tabloyu kullanın. 255'ten az etiket varsa, bir bayt (tinyint) veya başka bir sözcük (smallint) kullanın. Anahtar ne kadar küçük olursa, ana tablodaki yabancı anahtardaki indeks daha küçük ve daha hızlıdır.

+0

Tamam, neden bu sıradışı? :( –

İlgili konular