CRUD nedir: verinin dört temel işlemi
Bir uygulamanın veriyle yaptığı dört temel işlemi, bunların SQL komutları ve HTTP istekleriyle karşılığını ve yazarken dikkat edilecek noktaları öğrenirsiniz.
Bir bakışta
- CRUD, veriyle yapılan dört işlemin kısaltmasıdır. Oluşturma (Create), okuma (Read), güncelleme (Update) ve silme (Delete).
- Veritabanında CRUD, dört SQL komutuna denk gelir. INSERT, SELECT, UPDATE ve DELETE.
- API tarafında CRUD, HTTP yöntemleriyle eşlenir. POST, GET, PUT ya da PATCH ve DELETE.
- Çoğu yönetim ekranı ve form temelde bir CRUD arayüzüdür. Liste, detay, düzenleme ve silme düğmeleri bu dört işlemin görünür hâlidir.
- CRUD basit görünür, ama yetki ve veri bütünlüğü kuralları işin asıl zorluğudur. Herkes her kaydı silemez; silinen kayıp ilişkili veriyi bozmamalıdır.
CRUD nedir?
CRUD, bir uygulamanın veriyle yaptığı dört temel işlemin baş harflerinden oluşur: Create (oluştur), Read (oku), Update (güncelle) ve Delete (sil). Bir müşteri kaydını ekleyen, listeleyen, adresini değiştiren ve silen herhangi bir sistem bu dört işlemi kullanır.
Kavram belirli bir teknolojiye ait değildir. Aynı mantık ilişkisel veritabanında, belge veritabanında, bir web servisinde ya da bir mobil uygulamada geçerlidir; yalnızca işlemi ifade eden komut değişir.
SQL ve API karşılıkları
İlişkisel veritabanlarında dört işlem, dört SQL komutuyla yapılır. REST tabanlı servislerde ise aynı işlemler HTTP yöntemleriyle ifade edilir. İkisi arasındaki eşleşme genellikle şöyledir.
- Create: SQL'de INSERT, REST'te POST
- Read: SQL'de SELECT, REST'te GET
- Update: SQL'de UPDATE, REST'te PUT ya da PATCH
- Delete: SQL'de DELETE, REST'te DELETE
Eşleşme birebir bir kural değil, yaygın bir kullanımdır; bazı servisler güncellemeyi POST ile ya da silmeyi işaretleme olarak tasarlayabilir.
Aynı dört işlem, katmana göre farklı komutla yapılır
CRUD karşılıkları
| SQL | REST API | |
|---|---|---|
| Create (oluştur) | INSERT | POST |
| Read (oku) | SELECT | GET |
| Update (güncelle) | UPDATE | PUT ya da PATCH |
| Delete (sil) | DELETE | DELETE |
Küçük bir örnek: müşteri tablosu
Bir müşteri tablosunda ad, e-posta ve şehir sütunları olduğunu düşünelim. Yeni bir müşteri geldiğinde satır eklenir, listeleme ekranı tabloyu okur, müşteri adresini değiştirdiğinde ilgili satır güncellenir, kayıt kapatıldığında satır silinir.
Örnek bir SQL parçası bu akışı gösterir:
INSERT INTO musteri (ad, eposta) VALUES ('Ayşe', '[email protected]'); SELECT ad, eposta FROM musteri WHERE sehir = 'Ankara'; UPDATE musteri SET sehir = 'İzmir' WHERE eposta = '[email protected]'; DELETE FROM musteri WHERE eposta = '[email protected]';
UPDATE ve DELETE komutlarındaki WHERE koşulu hayati önemdedir; koşul unutulursa tablodaki tüm satırlar etkilenir.
Kayıt yaşam döngüsü
CRUD'u bir kaydın hayatı olarak da okuyabilirsiniz. Kayıt oluşturulur, kullanıldıkça okunur, bilgileri değiştikçe güncellenir ve işi bittiğinde silinir ya da arşivlenir.
Bu bakış, tasarım kararlarını kolaylaştırır: hangi aşamada kim yetkili, silinen kaydın geçmişi tutulacak mı, güncelleme izlenecek mi gibi sorular her aşama için ayrı yanıtlanır.
Bir kayıt, dört aşamada yaşar
Kaydın hayatı
- OluşturmaCreateKayıt ilk kez eklenir
- KullanımReadListe ve detay ekranlarında okunur
- DeğişimUpdateBilgiler değiştikçe güncellenir
- KapanışDeleteSilinir ya da arşivlenir
Sık yapılan hatalar ve dikkat noktaları
- WHERE koşulsuz UPDATE ya da DELETE yazmak: tüm tabloyu etkiler; önce SELECT ile aynı koşulu deneyin
- Silmeyi hep kalıcı yapmak: geçmiş ve denetim gerekiyorsa yumuşak silme düşünün
- Girdiyi doğrulamamak: oluşturma ve güncellemede veri biçimi ve zorunlu alanlar kontrol edilmelidir
- Yetkiyi atlamak: okuma yetkisi olan herkesin silme yetkisi yoktur
- Parametresiz sorgu yazmak: kullanıcı girdisi sorguya doğrudan eklenirse SQL enjeksiyonu riski doğar
- İlişkili kaydı unutmak: müşteri silinince siparişleri ne olacak sorusu önceden yanıtlanmalıdır
Mindset programlarında nerede çalışılır
SQL ile Programlama Eğitimi, veri işleme dili, sorgular ve tablolarla çalışmayı kapsar; CRUD'un veritabanı tarafı yazılımcılar ve veri analistleri için burada uygulanır.
Veritabanı Yönetim Sistemleri ve Uygulamaları programı ilişkisel ve NoSQL veritabanlarını, güvenlik ve yetkilendirmeyi işler; CRUD işlemlerinin yetki ve tasarım yönü bu çerçevede ele alınır.
İlgili Mindset programı
SQL ile Programlama Eğitimi
Sık sorulan sorular
CRUD ile REST aynı şey midir?
Hayır. CRUD veriyle yapılan işlemlerin sınıflandırmasıdır; REST ise web servislerinin tasarım stilidir. REST servisleri CRUD işlemlerini HTTP yöntemleriyle sunar, ama REST yalnız CRUD'dan ibaret değildir.
PUT ile PATCH farkı nedir?
PUT genellikle kaydın tamamını yeni verilerle değiştirmek için, PATCH ise yalnızca belirli alanları güncellemek için kullanılır. PUT'un aynı isteği tekrarlasa da aynı sonucu vermesi beklenir; bu özellik idempotentlik olarak adlandırılır.
Silme işlemi neden bazen gerçek silme değildir?
Geçmişin korunması, hatalı silmenin geri alınması ve yasal saklama gerekçeleriyle kayıt silinmez, silinmiş diye işaretlenir. Okuma sorguları da bu işaretli kayıtları filtreler.
Her uygulama sadece CRUD midir?
Veri taşıyan her uygulamanın temelinde CRUD vardır, ama iş kuralları ayrı katmandır. Sipariş onaylama, ödeme alma ya da stok rezervasyonu gibi işlemler birden çok CRUD adımını ve kuralı birlikte yürütür.
CRUD'u öğrenmek için hangi sırayla ilerlemeli?
Önce tek tabloda dört komutu deneyin, sonra WHERE koşulu ve kısıtları öğrenin. Ardından birden çok tabloyla çalışıp işlemleri (transaction) ve yetkiyi ekleyin; en son bir API üzerinden aynı işlemleri sunun.