Anahtarları ve Türleri Seçme
Birincil anahtarlar için BIGSERIAL ve UUID arasında seçim yapın, TEXT ile VARCHAR(n) arasında karar verin ve her sütun için doğru türü seçin.
Anahtarları ve Türleri Seçme, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
Birincil Anahtar Seçme
Üç gerçek seçenek vardır:
- BIGSERIAL — monotonik olarak artan 64 bit tam sayı
- UUID — 128 bitlik küresel olarak benzersiz değer
- Doğal anahtar — gerçek dünyadaki bir tanımlayıcı (e-posta, ISBN)
BIGSERIAL Ne Zaman Öne Çıkar
Çoğu uygulama için varsayılan seçim:
- Küçüktür (8 bayt), dizini hızlıdır ve önbellek dostudur
- Monotoniktir → yeni veriler dizinin sonunda kümelenir
- URL'lerde okunabilirdir (ör.
/posts/42)
UUID Ne Zaman Öne Çıkar
Şu durumlarda UUID seçin:
- Küresel olarak benzersiz kimliklere ihtiyacınız varsa (çoklu veri merkezi, çevrimdışı öncelikli uygulamalar)
- URL'lerdeki kimliklerin iş hacmini açığa çıkarmasını istemiyorsanız
- Kimliği ekleme işleminden önce istemci tarafında oluşturmak istiyorsanız
Maliyeti 16 bayttır (BIGINT için 8 bayta kıyasla) ve v4 UUID'leri dizindeki eklemeleri rastgele dağıtır.
Doğal Anahtarlar Neden Risklidir
E-posta adresleri değişir. SKU'lar yeniden adlandırılır. Ülke kodları bölünür. PK olarak bir vekil anahtar kullanın ve doğal anahtar üzerinde UNIQUE kısıtı oluşturun.
Sütun Türleri: Dizeler
Çoğu metin sütunu için:
VARCHAR(n)— kesin bir üst sınırınız olduğunda (e-postalar, kodlar)TEXT— serbest biçimli, uzun içerikler içinCITEXT— karşılaştırma her zaman büyük/küçük harf duyarsız olmalıysa (e-postalar!)
Sütun Türleri: Sayılar
Sayısal sütunlar için:
- Kimlikler ve sayaçlar için
BIGINT - Para için
NUMERIC(p, s) - Yalnızca bilimsel hesaplamalar için
REAL/DOUBLE PRECISION
Sütun Türleri: Zaman
Zaman sütunları için:
- Olaylar için
TIMESTAMPTZ(varsayılan) - Takvim günleri için
DATE(doğum günleri, tatiller) - Tarih içermeyen gün içindeki saat için
TIME(mağazanın açılış saatleri)
Boole ve Durum
Bir sütunun gelecekte ikiden fazla durumu olacaksa boolean yerine durum metni + CHECK kullanmayı tercih edin:
-- Will probably grow:
status TEXT NOT NULL CHECK (status IN ('draft','published','archived'))
-- vs the trap of "is_published BOOLEAN" when you later need a third state.Kısıt Kontrol Listesi
Her sütunda şunlar bulunmalıdır:
- Uygun olan en dar tür
- NULL bir anlam taşımıyorsa
NOT NULL - Sütun çoğunlukla aynı değeri alıyorsa bir
DEFAULT - Bir alan kuralı varsa bir
CHECK - WHERE/JOIN/ORDER içinde kullanılıyorsa bir dizin
Depolama Sonuçları
Dar türler = daha küçük satırlar = sayfa başına daha fazla satır = daha iyi önbellek isabet oranı. TEXT türünü VARCHAR(20) türüne dönüştürmek alan kazandırmaz (depolama aynıdır). BIGINT türünü INT türüne dönüştürmek sütun genişliğini yarıya indirir.
Yabancı Anahtar Türleri Eşleşmelidir
FK sütun türleri, başvurulan PK türüyle tam olarak eşleşmelidir:
-- Wrong (silently won't use the index efficiently):
user_id INT REFERENCES users(id) -- where users.id is BIGINT
-- Right:
user_id BIGINT REFERENCES users(id)Özet
Tür seçimi tasarımdır.
- PK için BIGSERIAL veya UUID
- Para için NUMERIC
- Olaylar için TIMESTAMPTZ
- Değişen durumlar için CHECK'li TEXT
- Varsayılan olarak NOT NULL
Hızlı Kontrol
Birçok saat dilimindeki kullanıcılar için olay zaman damgalarını saklıyorsunuz. Hangi türü seçmelisiniz?
Sıkça Sorulan Sorular
“Anahtarları ve Türleri Seçme” dersi ücretsiz mi?
Evet — “Anahtarları ve Türleri Seçme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“Anahtarları ve Türleri Seçme” dersinde ne öğreneceğim?
Birincil anahtarlar için BIGSERIAL ve UUID arasında seçim yapın, TEXT ile VARCHAR(n) arasında karar verin ve her sütun için doğru türü seçin. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Anahtarları ve Türleri Seçme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Bir Blogu Modelleme: Kullanıcılar, Gönderiler, Yorumlar
- Anahtarları ve Türleri Seçme
- Yaygın Sorgular için İndeksler
- Test Verileriyle Veritabanını Doldurma