Junior
İlişki bir ilişkisel veritabanında nasıl sağlanır?
sobes.tech yapay zeka
AI'dan gelen yanıt
İlişkisel veritabanı yönetim sistemlerinde (RDBMS) ilişkiler, Yabancı Anahtarlar (Foreign Keys) kullanılarak sağlanır.
Yabancı anahtar, bir tabloda başka bir tablonun birincil anahtarına referans veren sütun veya sütunlar kümesidir. Bu şekilde, iki tablo arasındaki kayıtlar arasında bir bağlantı kurulur.
İlişki türlerine örnekler:
- Birden çoğa (One-to-Many): Bir tablodaki bir kayıt, diğer tablodaki birkaç kayıtla ilişkilidir. Örneğin, bir departmanın birçok çalışanı olabilir.
Employeestablosunda,Departmentstablosundaki birincil anahtara referans veren bir yabancı anahtar bulunur. - Çoktan çoğa (Many-to-Many): Birinci tablodaki birkaç kayıt, ikinci tablodaki birkaç kayıtla ilişkilidir. Örneğin, bir öğrenci birkaç kurs alabilir ve bir kurs birçok öğrenci tarafından alınabilir. Bu, her iki tablonun birincil anahtarlarını içeren ara bir tablo (ilişki tablosu) kullanılarak gerçekleştirilir.
- Bir'e-bir (One-to-One): Bir tablodaki bir kayıt, yalnızca diğer tablodaki bir kayıtla ilişkilidir. Bu ilişki tipi daha az yaygındır ve genellikle bir tabloyu dikey olarak bölmek veya isteğe bağlı verileri depolamak için kullanılır. Bu, ikinci tabloda, ilk tablonun birincil anahtarına referans veren ve genellikle benzersiz bir kısıtlama içeren bir yabancı anahtar ile uygulanır.
SQL'de yabancı anahtar içeren bir tablo oluşturma örneği:
-- Departmanlar tablosunu oluştur
CREATE TABLE Departments (
department_id INT PRIMARY KEY, -- Birincil anahtar
department_name VARCHAR(100)
);
-- Çalışanlar tablosunu yabancı anahtar ile oluştur
CREATE TABLE Employees (
employee_id INT PRIMARY KEY,
employee_name VARCHAR(100),
department_id INT, -- Yabancı anahtar sütunu
FOREIGN KEY (department_id) REFERENCES Departments(department_id) -- Yabancı anahtar tanımı
);
Yabancı anahtarlar, verilerin referans bütünlüğünü sağlar, "hayalet" bağlantıların (bir yabancı anahtarın, bağlı olduğu tablodaki var olmayan bir kayda referans verdiği durumlar) oluşmasını engeller.