Bir Blogu Modelleme: Kullanıcılar, Gönderiler, Yorumlar
Bir ER diyagramı çizin, varlıkları ve ilişkileri belirleyin ve bunları normalleştirilmiş bir SQL şemasına dönüştürün.
Bir Blogu Modelleme: Kullanıcılar, Gönderiler, Yorumlar, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 1. 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.
Konu Alanı
Basit bir blog düşünün: kullanıcılar gönderiler yazar, diğer kullanıcılar gönderilere yorum yapar. Bunu bir şemaya dönüştürelim.
Varlıklar
Üç temel isim:
- Kullanıcı — kimlik, e-posta, ad
- Gönderi — kimlik, yazar, başlık, gövde, yayımlanma zaman damgası
- Yorum — kimlik, yazar, ait olduğu gönderi, gövde
İlişkiler
Kardinaliteler:
- Kullanıcı 1 ── ∞ Gönderi (bir kullanıcı birçok gönderi yazar)
- Kullanıcı 1 ── ∞ Yorum
- Gönderi 1 ── ∞ Yorum
Kullanıcı Tablosu
Diğer tablolar buna başvurduğu için kullanıcılarla başlayın:
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
full_name VARCHAR(100) NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);Gönderi Tablosu
Kullanıcılara FK:
CREATE TABLE posts (
id BIGSERIAL PRIMARY KEY,
author_id BIGINT NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
title VARCHAR(200) NOT NULL,
body TEXT NOT NULL,
published_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);Yorum Tablosu
İki yabancı anahtar:
CREATE TABLE comments (
id BIGSERIAL PRIMARY KEY,
post_id BIGINT NOT NULL REFERENCES posts(id) ON DELETE CASCADE,
author_id BIGINT NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
body TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);Yorumlarda ON DELETE CASCADE Neden Kullanılır?
Bir gönderi silinirse yorumları anlamsız kalır — veritabanının bunları otomatik olarak temizlemesine izin verin.
Yazarda ON DELETE RESTRICT Neden Kullanılır?
Bir kullanıcı ortadan kalktığında içeriği sessizce silmeyin. Uygulamayı önce kullanıcıyı mantıksal olarak silmeye veya içeriği yeniden atamaya zorlayın.
Etiketlere Genişletme (Çoka Çok)
Bir birleştirme tablosu aracılığıyla etiketler ekleyin:
CREATE TABLE tags (
id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE
);
CREATE TABLE post_tags (
post_id BIGINT REFERENCES posts(id) ON DELETE CASCADE,
tag_id BIGINT REFERENCES tags(id) ON DELETE CASCADE,
PRIMARY KEY (post_id, tag_id)
);Dallanan Yorumlar
Yanıtlar için kendine başvuran yorumlar:
ALTER TABLE comments
ADD COLUMN parent_id BIGINT REFERENCES comments(id) ON DELETE CASCADE;Mantıksal Silme ve Kalıcı Silme
Bir blog için gönderileri mantıksal olarak silmek genellikle daha uygundur — bozuk bağlantılar kullanıcı geçmişinde çalışmaz hâle gelmez. deleted_at TIMESTAMPTZ ekleyin ve her sorguda WHERE deleted_at IS NULL ile filtreleyin.
Sözcüklerle ER Diyagramı
users (1) -< (∞) posts (1) -< (∞) comments
Ayrıca: users (1) -< (∞) comments, posts (∞) >-< (∞) tags.
Özet
Şema tasarlamak varlıklar, ilişkiler ve kardinalitelerle başlar.
- Her tabloda vekil PK
- Yabancı anahtarlar ilişkileri bildirir
- Cascade veya Restrict seçimi iş gereksinimini yansıtır
- Çoka çok ilişki = birleştirme tablosu
Hızlı Kontrol
Gönderiler ile yorumlar arasındaki bire çok ilişkide yabancı anahtar nerede bulunur?
Sıkça Sorulan Sorular
“Bir Blogu Modelleme: Kullanıcılar, Gönderiler, Yorumlar” dersi ücretsiz mi?
Evet — “Bir Blogu Modelleme: Kullanıcılar, Gönderiler, Yorumlar” 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.
“Bir Blogu Modelleme: Kullanıcılar, Gönderiler, Yorumlar” dersinde ne öğreneceğim?
Bir ER diyagramı çizin, varlıkları ve ilişkileri belirleyin ve bunları normalleştirilmiş bir SQL şemasına dönüştürün. 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 1. dersidir.
“Bir Blogu Modelleme: Kullanıcılar, Gönderiler, Yorumlar” 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