ER Modellemesi ve İlişki Kardinalitesi
Gereksinimlerin varlıklara, ilişkilere ve bağlantı tablolarına dönüştürülmesi.
ER Modellemesi ve İlişki Kardinalitesi, CoddyKit'te ücretsiz bir Coding Interview Prep 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, Coding Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Coding Interview Prep kursu toplamda 4 dersten oluşur.
ER Modellemesi Mülakatlarda Neden Karşımıza Çıkar
Normalleştirmeden sonra mülakat yapanlar, gereksinimleri bir şemaya dönüştürüp dönüştüremediğinizi değerlendirir. Soru genellikle açık uçludur: "Bir yolculuk paylaşımı uygulaması için veritabanı tasarlayın" veya "Bir kütüphane sistemini modelleyin."
Bu, bir varlık-ilişki (ER) modelleme çalışmasıdır. Varlıkları, öznitelikleri ve aralarındaki ilişkileri, kardinalite de dahil olmak üzere nasıl belirlediğinize bakarlar.
Buradaki beceri, İngilizce isim ve fiilleri tablolara ve yabancı anahtarlara dönüştürmektir.
Varlıklar, Öznitelikler ve İlişkiler
Her ER modelini üç yapı taşı oluşturur:
- Varlık: hakkında veri sakladığınız şey (Müşteri, Sipariş, Ürün). Genellikle tabloya dönüşür.
- Öznitelik: bir varlığın özelliği (ad, fiyat, created_at). Genellikle sütuna dönüşür.
- İlişki: varlıkların birbirine nasıl bağlandığı (bir Müşteri bir Sipariş verir). Yabancı anahtarlar veya ara tablolarla uygulanır.
Sorudan çıkarılacak ipucu: isimler varlıklara/özniteliklere, fiiller ilişkilere dönüşür.
Kardinalite: Temel Kavram
Kardinalite, bir varlığın kaç örneğinin başka bir varlıkla ilişkilendirildiğini açıklar. Üç temel türü vardır:
- Bire bir (1:1): buradaki bir satır, oradaki en fazla bir satırla eşleşir.
- Bire çok (1:N): buradaki bir satır, orada birçok satırla eşleşir (en yaygın tür).
- Çoka çok (M:N): her iki taraftaki satırlar da diğer tarafta birçok satırla eşleşir.
Kardinaliteyi doğru belirlemek, yabancı anahtarların nereye konulacağını ve bir ara tabloya ihtiyaç olup olmadığını belirler.
Bire Çok İlişkisinin Uygulanması
Bire çok ilişkisi, yabancı anahtarın "çok" tarafına konulmasıyla uygulanır. Bir müşterinin birçok siparişi vardır; bu nedenle her sipariş satırında customer_id bulunur.
Mülakatta yönü her zaman açıkça belirtin: "Bir müşteriden birçok siparişe; bu nedenle FK orders üzerinde bulunur."
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT NOT NULL,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);Çoka Çok İlişkisinin Uygulanması
İlişkisel bir veritabanı M:N ilişkisini doğrudan saklayamaz. Mülakat yapanların beklediği cevap, ara tablodur (köprü, bağlantı veya ilişkilendirme tablosu da denir).
Öğrenciler birçok derse kaydolur; derslerde birçok öğrenci bulunur. Anahtarı her iki yabancı anahtarı birleştiren bir enrollments tablosu oluşturun. Böylece M:N ilişkisi iki 1:N ilişkisine dönüştürülür.
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE courses (
course_id INT PRIMARY KEY,
title VARCHAR(100)
);
CREATE TABLE enrollments (
student_id INT,
course_id INT,
enrolled_at DATE,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);Ara Tablo Veri Tutabilir
Sık sorulan bir devam sorusu şudur: "Bir öğrencinin dersten aldığı notu nereye kaydedersiniz?"
Not, yalnızca öğrenciye veya derse değil, ilişkiye aittir. Bu nedenle ara tabloya konur. Mülakat yapanların ölçmek istediği içgörü şudur: M:N ilişkisinin öznitelikleri köprüde bulunur.
Örnekler: kayıt tarihi, not, sipariş kalemindeki miktar, proje üyeliğindeki rol.
ALTER TABLE enrollments
ADD COLUMN grade CHAR(2);
-- grade describes THIS student in THIS course,
-- so it belongs on the junction tableBire Bir İlişkisinin Uygulanması
1:1 ilişkisi daha nadirdir. Bu ilişki, bağımlı tabloya aynı zamanda benzersiz anahtar olan bir yabancı anahtar verilerek uygulanır (bu anahtar genellikle birincil anahtarın kendisidir).
Örnek: genişletilmiş ve isteğe bağlı ayrıntıları içeren bir user ile bir user_profile. user_id değerini profil tablosunun birincil anahtarı yapmak, her kullanıcı için en fazla bir profil bulunmasını sağlar.
CREATE TABLE users (
user_id INT PRIMARY KEY,
email VARCHAR(255)
);
CREATE TABLE user_profiles (
user_id INT PRIMARY KEY, -- 1:1 enforced here
bio TEXT,
avatar_url VARCHAR(255),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);İsteğe Bağlılık ve Katılım
Kardinalitenin, mülakat yapanların önem verdiği ikinci bir boyutu vardır: isteğe bağlılık (katılım da denir).
- Zorunlu: her siparişin bir müşterisi olmalıdır; bu nedenle
customer_iddeğeriNOT NULLolur. - İsteğe bağlı: bir kullanıcının profili olabilir de olmayabilir de; dolayısıyla ilişki bulunmayabilir.
Katılımı NOT NULL ile yabancı anahtar üzerinde zorunlu hâle getirirsiniz. NULL olabilme durumundan söz etmeniz, yalnızca şekilleri değil, gerçek kısıtları da düşündüğünüzü gösterir.
Kendine Başvuran İlişkiler
Bazı ilişkiler bir varlığı yine kendisine bağlar. Bir çalışanın yine çalışan olan bir yöneticisi olabilir; bir kategorinin de bir üst kategorisi olabilir.
Bunu, aynı tabloya başvuran bir yabancı anahtarla modell ersiniz. Mülakat yapanlar, organizasyon şemaları ve ağaç yapıları için bunu bekler; bu yaklaşım kendi kendine birleştirmeler ve özyinelemeli ortak tablo ifadeleriyle de doğal biçimde birlikte kullanılır.
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100),
manager_id INT NULL,
FOREIGN KEY (manager_id) REFERENCES employees(employee_id)
);
-- manager_id NULL = top of the hierarchy (e.g. CEO)Kısa Bir Modelleme Çalışması
Fiilden ilişkiye yöntemini uygulayın. Soru: "Müşteriler sipariş verir; her sipariş birçok ürün içerir; ürünler tedarikçilere aittir."
- Müşteri 1:N Sipariş (orders üzerinde FK customer_id).
- Sipariş M:N Ürün -> miktar içeren ara tablo
order_items. - Tedarikçi 1:N Ürün (ürünler üzerinde FK supplier_id).
Her kardinaliteyi ve anahtarın nereye konduğunu belirtin. Bu anlatım, mülakatı kazanmanızı sağlar.
Sorulacak Açıklayıcı Sorular
Mülakat yapanlar, tasarlamadan önce soru soran adayları takdir eder. İyi açıklayıcı sorular şunlardır:
- "Bir ürün birden fazla tedarikçiye ait olabilir mi?" (1:N ile M:N arasındaki seçimi belirler).
- "Her siparişte en az bir kalem bulunması gerekiyor mu?" (katılım).
- "Geçmişe mi, yoksa yalnızca mevcut duruma mı ihtiyacımız var?" (ek tabloları gerektirir).
Cevaplar kardinaliteyi ve tablo sayısını değiştirir; bu nedenle asla varsayımda bulunmayın. Soru sormak, deneyim düzeyinizi gösterir.
Hızlı Kontrol
Her öğrencinin birçok ders alabildiği ve her dersin birçok öğrencisi olduğu öğrencileri ve dersleri modelliyorsunuz.
Özet: ER Modellemesi ve Kardinalite
Artık açık uçlu bir şema tasarımı sorusunu ele alabilirsiniz:
- İsimleri varlıklara/özniteliklere, fiilleri ilişkilere dönüştürün.
- 1:N: yabancı anahtar çok tarafında bulunur.
- M:N: her iki yabancı anahtarı ve ilişkiye ait tüm öznitelikleri tutan bir ara tablo kullanın.
- 1:1: bağımlı tabloda paylaşılan/b benzersiz bir anahtar kullanın.
- Zorunlu katılımı ifade etmek için
NOT NULLkullanın; hiyerarşiler için kendine başvuran yabancı anahtarlar kullanın. - Kardinaliteye karar vermeden önce netleştirici sorular sorun.
Sıkça Sorulan Sorular
“ER Modellemesi ve İlişki Kardinalitesi” dersi ücretsiz mi?
Evet — “ER Modellemesi ve İlişki Kardinalitesi” 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 Coding Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Coding Interview Prep kursu toplamda 4 dersten oluşur.
“ER Modellemesi ve İlişki Kardinalitesi” dersinde ne öğreneceğim?
Gereksinimlerin varlıklara, ilişkilere ve bağlantı tablolarına dönüştürülmesi. Coding Interview Prep 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.
Coding Interview Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Coding Interview Prep, 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.
“ER Modellemesi ve İlişki Kardinalitesi” 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 Coding Interview Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Coding Interview Prep 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
- 3NF'ye Kadar Normalleştirme
- ER Modellemesi ve İlişki Kardinalitesi
- Yıldız Şema ve Veri Ambarı Tasarımı
- Tam Deneme Mülakatı Problem Seti