Üniversitedeki son derslerden birinde (öğrenciyim), öğretim görevlisi bizden bir veritabanı (önemliyse MySQL Sunucusu) ve veritabanını veri kaynağı olarak tüketecek küçük istemci uygulaması geliştirmemizi istedi.
Şartlardan biri, (her tabloda PK olan) kimlik sütununun sıralı olması gerektiğiydi, çünkü bu iyi bir uygulamadır (öğretim görevlisi kelimelerine göre). Yani, tablo satırı silindiğinde, PK'nın sonraki eklerde yeniden kullanılması gerekir. RDBMS, PK'ler ve kimlik sütunları hakkında ortalama bilgiye sahibim. Anladığım kadarıyla, bu kimlik sütunu, DB'nin satırları eklerken otomatik olarak PK'ler oluşturmasına izin vermenin bir yoludur. Ve kimlik sütunu değeri, hiçbir şekilde (doğal anahtar olmadığı sürece) satır nitelikleriyle ilişkili olmayacaktır.
Bu gereksinim (kesinlikle sıralı kimlik sütunu) benim için şüpheliydi. Kimlik sıralı değilse (silmelerin neden olduğu boşluklarla) öğretim görevlisine neyin yanlış olduğunu sormaya çalıştım, ancak "kullanıcılar için uygun ve veritabanını koruyan DB yöneticileri için yararlı" gibi çok soyut bir cevap aldım. Belirli bir örnek yok. "Kullanıcılar için uygun" argümanı kulağa hoş geliyor, çünkü iş alanında hiçbir anlamı yok.
Bu yüzden bu nedenlerin gerçek olup olmadığını merak ediyorum? Kimlik sütunu yeniden kullanımı gerektiğinde (kimlik alanı tükendiğinde) yalnızca bir vakayı düşünebilirim. Kimlik sütunu türü, yanlış diyelim basit seçildi Fakat bu daha tasarım konudur int
yerine bigint
veya uniqueidentifier
masa milyar satır içerdiğinde. Bir kimlik sütununun kümelenmiş bir dizin olduğunu varsayalım: Kimlik sütunundaki boşluklar dizin performansını etkileyebilir mi? Belki farkında olmadığım her silme işleminden sonra otomatik kimlik sütununun yeniden tohumlanmasının başka gerçek dünya nedenleri vardır?
Şimdiden teşekkürler!