Bu makalede, MySQL veritabanında ilişkili tabloların oluşturulması ve kullanımı detaylı bir şekilde incelenmektedir İlişkili tablolar, verilerin daha düzenli bir şekilde saklanmasına yardımcı olan bir yapıdır Böylece, veriler arasındaki bağlantılar sağlanarak, veritabanının doğru ve tutarlı çalışması sağlanır Üç farklı türü olan 1-1, 1-Çok ve Çok-Çok ilişkileri de ele alan makale, her bir ilişki türü için örnek uygulamalar ile konuları daha ayrıntılı bir şekilde açıklamaktadır Kullanıcılar ve profil tabloları gibi örnekler verilerek, ilişkili tabloların veri kaybı veya çakışma olmadan veritabanlarının kurulmasına yardımcı olduğu vurgulanmaktadır

Merhaba, bu makalemizde veritabanlarının en önemli konularından biri olan ilişkili tabloları ele alacağız. Özellikle MySQL veritabanında ilişkili tabloların nasıl oluşturulduğunu ve nasıl kullanıldığını detaylı bir şekilde inceleyeceğiz.
İlişkili tablolar, verilerin daha düzenli bir şekilde saklanmasına yardımcı olan bir yapıdır. Bir veritabanında farklı tablolar arasında ilişki kurulması çok yaygın bir durumdur. Örnek olarak, bir e-ticaret sitesinde müşteriler, siparişler ve ürünler gibi veriler farklı tablolarda saklanabilir. Bu durumda, müşteri numarası gibi belirli bir özellik, farklı tablolarda saklanarak birbirleriyle ilişkilendirebilir.
Bu makalede öncelikle, ilişkili tabloların ne olduğunu anlatacağız ve ardından üç farklı türü olan 1-1, 1-Çok ve Çok-Çok ilişkileri detaylı olarak ele alacağız. Bunların her biri farklı veri yapılarını destekler ve kullanımları da değişkenlik gösterir. Ayrıca, her ilişki türü için örnek uygulamalar da göstereceğiz.
İlişkili Tablolar Nedir?
İlişkili tablolar, bir veritabanında verilerin saklanmasında önemli bir konudur. Bu tablolar, birbirleri ile bağlantılı olan verilerin depolandığı veritabanı tablolarıdır. Bu tablolar, verilerin bütünlüğünü sağlamak için kullanılır ve veritabanının verimli çalışmasına yardımcı olur. Yani ilişkili tablolar, veriler arasındaki bağlantıları sağlayarak veritabanının doğru ve tutarlı çalışmasını sağlar.
İlişkili Tablo Türleri
İlişkili tablolar, birbirleriyle bağlantılı olan verilerin saklandığı tablolardır ve birçok veri tabanı yönetim sisteminde kullanılırlar. MySQL veritabanında ise üç farklı ilişkili tablo türü vardır: 1-1, 1-Çok ve Çok-Çok.
1-1 ilişkili tablolar, iki tablo arasında birbirine tekabül eden kayıtları içerir. Bu tür tablolar, tek bir anahtar alanı kullanarak birbirine bağlanır. Örneğin, bir Kullanıcılar tablosu ve profilleri hakkında bilgi içeren bir Profil tablosu arasında 1-1 ilişki kurulabilir. Her kullanıcı için yalnızca bir profil kaydı olmalıdır ve her profil kaydı sadece tek bir kullanıcıya ait olmalıdır.
1-Çok ilişkili tablolar, bir tabloda tek bir kaydın diğer tabloda birden çok kayda tekabül ettiği durumlarda kullanılır. Bu tür tablolar birincil anahtar alanı kullanarak bağlanır. Örneğin, bir Kategoriler tablosu ve ürünler hakkında bilgi içeren bir Ürünler tablosu arasında 1-Çok ilişki kurulabilir. Her kategori için birden çok ürün kaydı olabilir ve her ürün kaydı sadece bir kategoriye ait olmalıdır.
Çok-Çok ilişkili tablolar, iki tablo arasında birbirine birden çok kayıtla bağlantı kurulduğu durumlarda kullanılır. Bu tür tablolar, ara bir tablo kullanarak birbirine bağlanır. Örneğin, bir Kitaplar tablosu ve yazarları hakkında bilgi içeren bir Yazarlar tablosu arasında Çok-Çok ilişki kurulabilir. Her kitap için birden çok yazar kaydı olabilir ve her yazar kaydı birden çok kitaba ait olabilir. Bu ilişki, bir ara tablo olan Kitap_Yazarları tablosu kullanılarak kurulabilir.
1-1 İlişkili Tablolar
1-1 ilişkili tablolar, veritabanlarında iki tablo arasında birbirine tekabül eden kayıtları içeren ilişkilidir. Bu tür tablolar, tek bir anahtar alanı kullanarak birbirine bağlanır. İki tablo arasında bir 1-1 ilişki kurulduğunda her bir kayıt yalnızca bir başka kayda bağlanabilir. Bu, veri bütünlüğünü korumaya yardımcı olur.
Bu tür ilişkilerin örnekleri arasında 'Kullanıcılar' ve 'Profil' tabloları yer alır. Her bir kullanıcının, sadece bir profil kaydı vardır ve her profil kaydı sadece bir kullanıcıya ait olabilir. Benzer şekilde, 'Müşteriler' tablosu ve 'Fatura' tablosu arasında da 1-1 ilişki kurulabilir. Her müşteri için yalnızca bir fatura kaydı vardır ve her fatura kaydı sadece bir müşteriye aittir.
1-1 ilişkili tablolar, veri tabanında verilerin tutarlılığını ve doğruluğunu sağlar. Bu ilişkiler, birbirleriyle bağlantılı olan verileri tuttuğumuz zaman, veri kaybı veya çakışma olmadan veritabanlarının kurulmasına yardımcı olur. Tek anahtar alanı kullanmak, verilerin birbirine eşleştirilmesini kolaylaştırır ve veri tabanında depolanan verilerin verimli bir şekilde kullanılmasını sağlar.
Örnek: Kullanıcılar ve Profil Tabloları
MySQL veritabanında, kullanıcılar ve profil bilgileri gibi benzeri verilerin saklanması için ilişkili tablolar kullanılabilir. Kullanıcılar tablosu ve profil tablosu arasında 1-1 ilişki kurulabileceği gibi, her kullanıcı için yalnızca bir profil kaydı olması ve her profil kaydının yalnızca tek bir kullanıcıya ait olması sağlanır. Bu sayede, veri bütünlüğü korunur ve gereksiz veri yığılmaları önlenir.
Örneğin, bir online e-ticaret sitesinde kullanıcılar tablosunda kullanıcı adı, e-posta adresi ve şifre gibi bilgiler saklanabilirken, aynı kullanıcının profil tablosunda adı, soyadı ve adres gibi kişisel bilgileri saklanabilir. Kullanıcıların bilgilerinin profil tablosunda saklanması sayesinde, kullanıcıların profil bilgilerini güncelleme ya da kaldırma gibi işlemler de daha hızlı ve kolay bir şekilde gerçekleştirilebilir.
Kullanıcılar Tablosu | Profil Tablosu |
---|---|
Kullanıcı ID | Profil ID |
Kullanıcı Adı | Adı |
E-posta Adresi | Soyadı |
Şifre | Adres |
Yukarıdaki tabloda, kullanıcılar ve profil tablolarının yapısı örnek olarak gösterilmiştir. Kullanıcı ID ve Profil ID, birbirine bağlanarak 1-1 ilişki kurulması sağlanır. Bu sayede, her kullanıcının yalnızca bir profil kaydı olacak şekilde saklanması mümkün olur. Aynı şekilde, profil tablosundaki diğer kişisel bilgiler de kullanıcı ID ile ilişkilendirilerek saklanabilir.
Örnek: Müşteriler ve Fatura Tabloları
Müşteriler ve fatura tabloları arasında kurulacak olan 1-1 ilişki, her müşteri için yalnızca bir fatura kaydı olması ve her fatura kaydının yalnızca tek bir müşteriye ait olması gerektiği anlamına gelir. Bu ilişkiyi kurmak için, müşteriler tablosundaki birincil anahtar alanı (id) fatura tablosundaki yabancı anahtar alanı (customer_id) ile eşleştirerek bağlantı kurabilirsiniz. Böylece her müşterinin yalnızca bir faturası olacak ve her fatura kaydı yalnızca o müşteriye ait olacaktır.
1-Çok İlişkili Tablolar
1-Çok ilişkili tablolar, bir tabloda tek bir kaydın, diğer tabloda birden çok kayda tekabül ettiği durumlarda kullanılır. Bu tür tablolar, birincil anahtar alanı aracılığıyla birbirine bağlanır. Örneğin, bir müşterinin birden çok siparişi olabilir ve bu siparişler fatura tablosunda saklanır. Bu durumda, müşteri tablosu ve fatura tablosu arasında 1-Çok ilişki kurulabilir. Müşteri tablosundaki müşteri kimlik numarası, fatura tablosundaki müşteri kimlik numarası alanına birincil anahtar olarak atanabilir. Bu şekilde, fatura tablosundaki her kayıt, müşteri tablosundaki bir kayda tekabül eder.
Bu ilişki türü, verilerin bütünlüğünü sağlamak için kullanışlıdır. Veri bütünlüğü, bir veritabanında saklanan verilerin doğru, eksiksiz ve güncel olduğunu garanti eder. 1-Çok ilişkili tablolar, verilerin tekrarlanmasını önler ve veri depolama alanını azaltır. Örneğin, bir ürünün birden çok rengi olabilir ve bu renkler ayrı bir tabloda saklanabilir. Bu durumda, ürünler tablosu ve renkler tablosu arasında 1-Çok ilişki kurulabilir. Ürünler tablosundaki ürün kimlik numarası, renkler tablosundaki ürün kimlik numarası alanına birincil anahtar olarak atanabilir. Böylece, her ürün kaydı, renkler tablosundaki birden çok kayda tekabül eder.
Örnek: Kategoriler ve Ürünler Tabloları
Kategoriler ve ürünler tabloları, bir e-ticaret sitesinde sıklıkla kullanılan ilişkili tablolar arasındadır. Kategoriler tablosunda her kategori için bir satır kaydı oluşturulurken, ürünler tablosunda her ürün için bir satır kaydı oluşturulur. Her ürün sadece bir kategoriye ait olabilirken, her kategori birden çok ürün kaydı içerebilir. Bu nedenle, Kategoriler tablosu ile Ürünler tablosu arasında 1-Çok ilişki kurulabilir.
Örneğin, bir spor e-ticaret sitesinde, ayakkabılar, tişörtler, şortlar vb. farklı ürün kategorileri bulunabilir. Kategoriler tablosunda bu ürün kategorilerinin her biri için bir satır kaydı oluşturulur ve her kayıt bir "kategori_id" alanıyla tanımlanır. Ürünler tablosunda ise, her ayakkabı, tişört veya şort için bir satır kaydı oluşturulur ve her kayıt, ürünün adı, fiyatı, stok miktarı vb. bilgileri içerir. Her kayıt ayrıca bir "kategori_id" alanıyla da tanımlanır, böylece her ürün sadece bir kategoriye ait olabilir.
Örnek: Bölümler ve Çalışanlar Tabloları
Bölümler ve çalışanlar, bir şirketteki en önemli öğelerden biridir. Bu nedenle, her çalışanın hangi bölüme ait olduğunu bilmek, verimlilik açısından önemlidir. Bu verileri saklamak için, bölümler tablosu ve çalışanlar tablosu arasında bir 1-Çok ilişki kurulabilir.
Bu ilişki, bölümler tablosundaki birincil anahtar alan ile çalışanlar tablosundaki yabancı anahtar alan arasında kurulur. Her bölüm için birden çok çalışan kaydı vardır ve her çalışan kaydı yalnızca bir bölüme aittir. Böylece, veri bütünlüğü sağlanır ve herhangi bir yanlışlık veya tutarsızlık önlenir.
Örneğin, bir şirkette müşteri hizmetleri bölümü, insan kaynakları bölümü ve maliye bölümü olabilir. Her bölüm için, çalışanlar tablosunda kaydedilen her çalışanın, hangi bölüme ait olduğu bölümler tablosunda saklanır. Bu sayede, belirli bir bölümdeki tüm çalışanların listesi kolayca alınabilir veya bir çalışanın hangi bölüme ait olduğu sorgulanabilir.
Bölümler Tablosu | Çalışanlar Tablosu |
---|---|
Bölüm ID | Çalışan ID |
Bölüm Adı | Adı |
Soyadı | |
Bölüm ID (Yabancı Anahtar) |
Bu örnek, bölümler ve çalışanlar tabloları arasındaki 1-Çok ilişkinin nasıl kurulabileceğini gösterir. Bu tür bir ilişki, birçok farklı senaryoda kullanılabilir ve MySQL'in veri bütünlüğünü korumak için sağladığı faydalar nedeniyle sıklıkla tercih edilir.
Çok-Çok İlişkili Tablolar
Çok-Çok ilişkili tablolar, birbirleriyle birden çok kayıtla bağlantılı olan iki tablonun birbirine bağlanması için kullanılır. Bu tür tablolar, iki ana tablonun arasında kalan üçüncü bir ara tablo ile bağlantı kurulur. Bu ara tablo, iki ana tablodaki anahtar alanlarından oluşan bağlantı anahtarlarını içerir. Bu ilişkide, her ana tablo, ara tablo aracılığıyla birbirine bağlanır ve veri bütünlüğü sağlanır.
Çok-Çok ilişkili tablolar, özellikle e-ticaret sitelerinde ürün kategorileri ve özellikleri, müşteriler ve satın aldıkları ürünler gibi verilerin saklanması için sıklıkla kullanılır. Bu tür tablolar, veri bütünlüğünü sağlamada çok önemli bir rol oynar ve verilerin doğru bir şekilde kaydedilmesini ve işlenmesini sağlar. Büyük veri kümelerini yönetmek için de idealdirler.
Çok-Çok ilişkili tabloların oluşturulması için, öncelikle bağlanmak istenen ana tabloların belirlenmesi gerekir. Daha sonra, ara tablonun oluşturulması ve bu tablonun anahtar alanlarının belirlenmesi gerekiyor. Bu alanlar, her iki ana tabloda da benzersiz olmalıdır. Son olarak, bu alanların ilişkili anahtar olarak tanımlanması ve ilişkilerin oluşturulması gerekiyor.
Bir örnek olarak, kitaplar ve yazarlar tabloları arasında Çok-Çok ilişki kurulabilir. Her kitap için birden çok yazar kaydı vardır ve her yazar kaydı birden çok kitaba ait olabilir. Bu durumda, ara tablo kitap_yazarları olabilir. Bu tablo, kitapların ve yazarların anahtar alanlarını içerir ve her iki ana tablo arasında birbirine bağlanır. Bu ilişki, bir kitabın birden çok yazarı olabileceği gibi, bir yazarın da birden çok kitabı olabileceğini de gösterir.
Çok-Çok ilişkili tablolar, birçok veritabanı yönetim sistemi tarafından desteklenir ve veri bütünlüğü sağlamada önemli bir rol oynar. Veri tabanlarındaki büyük veri kümelerinin yönetiminde, özellikle e-ticaret sitelerinin yüksek veri hacimlerini yönetmek için vazgeçilmezdir.
Örnek: Kitaplar ve Yazarlar Tabloları
Kitaplar ve yazarlar ilişkili tablolar konusunda örnek teşkil eder. Çünkü her bir kitap için birden fazla yazar bulunabilir ve her bir yazarın da birden fazla kitabı olabilir. Bu durumda, kitaplar tablosu ve yazarlar tablosu arasında çok-çok ilişki kurulur. Yani her bir kitap kaydı, birden fazla yazar kaydı ile bağlantılıdır ve her bir yazar kaydı da birden fazla kitap kaydı ile bağlantılıdır.
Bu ilişkiyi kurmak için bir ara tablo olan kitap_yazarları tablosu kullanılır. Bu tablo, kitap ve yazar kayıtlarının birbirine bağlanmasını sağlar. Örneğin, kitap_yazarları tablosunda bir kitap kaydı, işaretli bir yazar kaydı ile eşleştirilebilir ve bu eşleştirme ile her bir kitap-yazar çifti oluşturulabilir.
kitap_yazarları Tablosu | ||
---|---|---|
kitap_id | yazar_id | kitap_yazar_id |
1 | 1 | 1 |
2 | 1 | 2 |
1 | 2 | 3 |
3 | 2 | 4 |
Yukarıdaki tabloda, kitap_id sütunu kitaplar tablosundan alınan verileri, yazar_id sütunu yazarlar tablosundan alınan verileri, kitap_yazar_id sütunu ise her bir kitap-yazar çiftine özgü bir kimlik numarasını temsil eder.
- Bir kitap kaydı, birden çok yazar kaydı ile bağlantılıdır.
- Bir yazar kaydı, birden çok kitap kaydı ile bağlantılıdır.
- Kitaplar ve yazarlar tablolarında herhangi bir değişiklik yapıldığında, kitap_yazarları tablosundaki ilgili kayıtlar da güncellenmelidir.
Kitap-yazar ilişkisi, özellikle kütüphaneler ve yayınevleri için önemlidir. Bir kitabın, birden fazla yazarı olduğunda veya bir yazarın, birden fazla kitabı olduğunda bu ilişkiyi doğru bir şekilde yönetmek, veri bütünlüğü ve etkili veri analizi açısından önemlidir.
Örnek: Hastalar ve Doktorlar Tabloları
Hastalar tablosu ve doktorlar tablosu, belirli bir hastanenin veya kliniklerinin hasta ve doktor kayıtlarının tutulduğu tablolardır. Bu tablolar arasında Çok-Çok ilişki kurulabilir. Bu ilişki, hasta_doktorlar adlı bir ara tablo kullanılarak kurulur. Hasta_doktorlar tablosu, her bir hasta-doktor ilişkisi için bir kayıt içerir.
Her hasta kaydı için birden çok doktor kaydı vardır ve her doktor kaydı birden çok hastaya ait olabilir. Örneğin, bir hastanede yatan bir hasta, birden fazla doktordan tedavi alabilir ve aynı zamanda bir doktor da birden fazla hastaya hizmet verebilir. Bu nedenle, hasta_doktorlar tablosu, her hasta-doktor ilişkisi için ayrı bir kayıt içermektedir.
Bu tablo, hasta ve doktor tabloları arasında birçok-çok ilişki kurmak için kullanılan bir ara tablodur. Bu ilişki türünde, birincil anahtarları kullanarak veriler arasında bağlantılar kurulur. Hasta kayıtları hasta_doktorlar tablosunda doktorların kimlik numaralarına göre ilişkilendirilir ve doktor kayıtları da aynı tabloda hasta kimlik numaralarına göre ilişkilendirilir.
Bu şekilde, hastaların hangi doktorlar tarafından tedavi edildiği ve her doktorun kaç hastaya hizmet verdiği gibi bilgiler kolayca elde edilebilir. Bu ilişki, veri bütünlüğünü korumak ve veritabanında tekrarlanan verileri önlemek için önemlidir.
Hastalar ve doktorlar arasındaki ilişki, birçok-çok ilişki türüne örnektir. Hasta_doktorlar adlı ara tablo, her hasta-doktor ilişkisi için ayrı bir kayıt içerir ve hasta ve doktor tabloları arasında bağlantılar kurar. Bu ilişki türü, veri bütünlüğünü korumak ve veritabanında tekrarlanan verileri önlemek için önemlidir. MySQL veritabanında, ilişkili tablolar kullanarak verileri daha organize bir şekilde saklayabilir ve veriler arasındaki bağlantıları daha kolay bir şekilde kurabilirsiniz.