Bit ve Boole sütunları


12

Bit alanlarının verilerin sadece ikili sunumları olduğu ve biraz "garip" bir şekilde sorgulanması gerektiği göz önüne alındığında.

Boole değeri için bir bit alanı kullanmanın herhangi bir faydası var mı? Gördüğüm kadarıyla, alanın tek gerçek fayda olduğunu öne sürüyor gibi görünüyor.

Yanıtlar:


14

Şahsen ben BOOLEANbir boolean değeri için kullanırdım . Ancak, MySQL'de BOOLEANsadece TINYINT(1) [src] kelimesinin eş anlamlısı olduğunu unutmayın .

Bu, elbette, dikkatli değilseniz 0 veya 1 dışında değerlere sahip olabileceğiniz anlamına gelir. Bunu önlemek için, takma ad kullanabilirsiniz TRUEve FALSEsırasıyla 1 ve 0 olarak bu harita olarak, veri ekleme ve güncellerken.

Tam olması uğruna, 5.0.3'ten önce BITde eşanlamlıydı TINYINT(1).


1

Doğru anlarsam, BOOLEAN her zaman sütun başına 1 bayt kullanır, ancak BIT (n), verilen bit sayısını tutmak için gereken az sayıda bayt kullanır.

BIT biraz yer tasarrufu sağlayabilir, ancak SQL ile sorgulamanız gerekiyorsa BOOLEAN ile çalışmak daha kolaydır.

Bir uygulama tarafından anlaşılan ve uygulamadaki tek bir alanda saklanan bir dizi bayrakım olsaydı, o zaman BIT (n) kullanmak isterdim. Ancak SQL'den sorgulanması gereken sütunlar olsaydı, BOOLEAN kullanıyordum.

Örnek olarak, bir etkinliğin hangi haftada çalışması gerektiğini kaydetmek için bayraklar kullanan bir uygulama, haftada biraz da olsa, etkinlik belirtilen haftada çalışıyorsa 1 olur. Verilerin bir veritabanında sorgulanması kolay olacaksa, iki tabloda "normalleştirilir", ancak verilerin yalnızca veritabanında depolanması gerekiyorsa, uygulamanın kullandığı formda en iyi şekilde tutulur. içinde.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.