Aracılığıyla paylaş


Access veritabanında tablolar arasında ilişki tanımlama

Uyarı

Acemi: Tek kullanıcılı bilgisayarlarda kullanıcı arabirimi hakkında bilgi gerektirir. Bu makale yalnızca bir Microsoft Access veritabanı (.mdb veya .accdb) için geçerlidir.

Özet

Bu makalede, Microsoft Access veritabanında ilişkilerin nasıl tanımlanacağı açıklanır. Makale şunları içerir:

  • Tablo ilişkileri nedir?
  • Tablo ilişkileri türleri
    • Bire çok ilişkiler
    • Çok-a-çok ilişkiler
    • Bire bir ilişkiler
  • Tablolar arasındaki ilişkileri tanımlama
    • Bire çok veya bire bir ilişki tanımlama
    • Çoktan çoğa ilişki nasıl tanımlanır?
  • Referans bütünlüğü
  • Art arda güncelleştirmeler ve silmeler
  • Birleştirme türleri

Tablo ilişkileri nedir?

İlişkisel bir veritabanında ilişkiler, yedekli verileri önlemenizi sağlar. Örneğin, kitaplar hakkındaki bilgileri izleyen bir veritabanı tasarlarsanız, kitap başlığı, yayın tarihi ve yayımcı gibi her kitapla ilgili bilgileri depolayan "Başlıklar" adlı bir tablonuz olabilir. Ayrıca yayımcının telefon numarası, adresi ve Posta Kodu gibi yayımcı hakkında depolamak isteyebileceğiniz bilgiler de vardır. Tüm bu bilgileri "Başlıklar" tablosunda depolarsanız, yayımcının yazdıracağı her başlık için yayımcının telefon numarası yinelenebilir.

Daha iyi bir çözüm, yayımcının bilgilerini yalnızca bir kez, "Yayımcılar" olarak adlandırılan ayrı bir tabloda depolamaktır. Daha sonra "Titles" tablosuna "Publishers" tablosundaki bir girdiye başvuran bir işaretçi koyabilirsiniz.

Verilerinizin eşitlenmiş kalmasını sağlamak için tablolar arasında bilgi tutarlılığını zorunlu kılabilirsiniz. Bilgi tutarlılığı ilişkileri, bir tablodaki bilgilerin başka bir tablodaki bilgilerle eşleştiğinden emin olunmasını sağlar. Örneğin, "Başlıklar" tablosundaki her başlık , "Yayımcılar" tablosundaki belirli bir yayımcıyla ilişkilendirilmelidir. Veritabanında mevcut olmayan bir yayımcının veritabanına başlık eklenemez.

Veritabanındaki mantıksal ilişkiler, verileri verimli bir şekilde sorgulamanızı ve raporlar oluşturmanızı sağlar.

Tablo ilişkileri türleri

İlişki, anahtar sütunlardaki verileri genellikle her iki tabloda da aynı ada sahip olan sütunları (veya alanları) eşleştirerek çalışır. Çoğu durumda ilişki, birincil anahtarı veya her satır için benzersiz tanımlayıcı sütununu bir tablodan başka bir tablodaki alana bağlar. Diğer tablodaki sütun "yabancı anahtar" olarak bilinir. Örneğin, her kitap başlığının satışlarını izlemek istiyorsanız, "Başlıklar" tablosundaki birincil anahtar sütunu ( title_ID olarak adlandıralım) ile "Satışlar" tablosundaki title_ID adlı sütun arasında bir ilişki oluşturursunuz. "Satışlar" tablosundaki title_ID sütunu yabancı anahtardır.

Veritabanı tabloları arasında üç tür ilişki vardır. Oluşturulan ilişki türü, ilgili sütunların nasıl tanımlandığına bağlıdır.

Bire çoklu ilişkiler

Bire çok ilişkisi en yaygın ilişki türüdür. Bu tür bir ilişkide, A tablosundaki bir satır B tablosunda birçok eşleşen satıra sahip olabilir. Ancak B tablosundaki bir satır, A tablosunda yalnızca bir eşleşen satıra sahip olabilir. Örneğin, "Yayımcılar" ve "Başlıklar" tablolarının bire çok ilişkisi vardır. Diğer bir ifadeyle, her yayımcı birçok başlık üretir. Ancak her başlık yalnızca bir yayımcıdan gelir.

İlişkili sütunlardan yalnızca biri birincil anahtarsa veya benzersiz bir kısıtlamaya sahipse bire çok ilişkisi oluşturulur.

Access'teki ilişki penceresinde, bire çok ilişkinin birincil anahtar tarafı 1 sayısıyla gösterilir. Bir ilişkinin yabancı anahtar tarafı sonsuzluk simgesiyle gösterilir.

Access'teki ilişkiler penceresinde bire çok ilişkilere yönelik bir örneğin ekran görüntüsü.

Çok-a-çok ilişkiler

Çoka çok ilişkisinde, A tablosundaki bir satır B tablosunda çok sayıda eşleşen satıra sahip olabilir ve bunun tersi de geçerlidir. Birleşim tablosu olarak adlandırılan üçüncü bir tablo tanımlayarak böyle bir ilişki oluşturursunuz. Birleşim tablosunun birincil anahtarı, A ve B tablolarındaki yabancı anahtarlardan oluşur. Örneğin, "Yazarlar" tablosu ile "Başlıklar" tablosu, bu iki tablonun her birinden "TitleAuthors" tablosuna giden bire çok ilişkilerle tanımlanmış bir çoka çok ilişkisine sahiptir. "TitleAuthors" tablosunun birincil anahtarı , au_ID sütununun ("Yazarlar" tablosunun birincil anahtarı) ve title_ID sütununun ("Başlıklar" tablosunun birincil anahtarı) birleşimidir.

Access'teki ilişkiler penceresinde çoka çok ilişkiler için bir örneğin ekran görüntüsü.

Bire bir ilişkiler

Bire bir ilişkide, A tablosundaki bir satırın B tablosunda birden fazla eşleşen satırı olamaz ve bunun tersi de geçerlidir. İlişkili sütunların her ikisi de birincil anahtarsa veya benzersiz kısıtlamalara sahipse bire bir ilişki oluşturulur.

Bu tür bir ilişki yaygın değildir, çünkü bu şekilde ilişkili bilgilerin çoğu tek bir tabloda yer alır. Aşağıdaki eylemleri yapmak için bire bir ilişki kullanabilirsiniz:

  • Tabloyu birçok sütunla bölün.
  • Güvenlik nedeniyle tablonun bir bölümünü yalıtın.
  • Kısa ömürlü olan ve tabloyu silerek kolayca silinebilen verileri depolayın.
  • Yalnızca ana tablonun bir alt kümesine uygulanan bilgileri depolayın.

Access'te, bire bir ilişkinin birincil anahtar tarafı bir anahtar simgesiyle gösterilir. Yabancı anahtar tarafı da bir anahtar simgesiyle gösterilir.

Tablolar arasındaki ilişkileri tanımlama

Tablolar arasında bir ilişki oluşturduğunuzda, ilgili alanların aynı adlara sahip olması gerekmez. Ancak, birincil anahtar alanı otomatik sayı alanı olmadığı sürece ilgili alanların aynı veri türüne sahip olması gerekir. Otomatik Sayı alanını sayı alanıyla eşleştirebilmeniz için, eşleşen alanların her ikisinin deFieldSizeproperty değeri aynı olması gerekir. Örneğin, her iki alanın daFieldSizeproperty değeriLong Integer ise Bir Otomatik Sayı alanıyla Sayı alanını eşleştirebilirsiniz. Eşleşen her iki alan da Sayı alanları olsa bile, aynıFieldSizeproperty ayarına sahip olmaları gerekir.

Bire çok veya bire bir ilişki tanımlama

Bire çok veya bire bir ilişki oluşturmak için şu adımları izleyin:

  1. Tüm tabloları kapatın. Açık tablolar arasında ilişki oluşturamaz veya değiştiremezsiniz.

  2. Access 2002 veya Access 2003'te şu adımları izleyin:

    1. Veritabanı penceresine geçmek için F11 tuşuna basın.
    2. Araçlar menüsünde İlişkiler'e tıklayın.

    Access 2007, Access 2010 veya Access 2013'te, Veritabanı Araçları sekmesinin Göster/Gizle grubunda İlişkiler'e tıklayın.

  3. Veritabanınızda henüz herhangi bir ilişki tanımlamadıysanız, Tabloyu Göster iletişim kutusu otomatik olarak görüntülenir. İlişkili olmasını istediğiniz tabloları eklemek istiyorsanız ancak Tabloyu Göster iletişim kutusu görünmüyorsa, İlişkiler menüsünde Tabloyu Göster'e tıklayın.

  4. İlişkili olmasını istediğiniz tabloların adlarını çift tıklatın ve tabloyu göster iletişim kutusunu kapatın. Tabloyla kendisi arasında ilişki oluşturmak için bu tabloyu iki kez ekleyin.

  5. İlişkili olmasını istediğiniz alanı bir tablodan diğer tablodaki ilgili alana sürükleyin. Birden çok alanı sürüklemek için Ctrl tuşuna basın, her alanı tıklatın ve sonra sürükleyin.

    Çoğu durumda, birincil anahtar alanını (bu alan kalın metinle görüntülenir) bir tablodan, diğer tablodaki yabancı anahtar olarak adlandırılan benzer bir alana (bu alan genellikle aynı ada sahiptir) sürüklersiniz.

  6. İlişkileri Düzenle iletişim kutusu görüntülenir. İki sütunda görüntülenen alan adlarının doğru olduğundan emin olun. Gerekirse adları değiştirebilirsiniz.

    Gerekirse ilişki seçeneklerini ayarlayın. İlişkileri Düzenle iletişim kutusunda belirli bir öğe hakkında bilginiz olması gerekiyorsa, soru işareti düğmesine tıklayın ve sonra öğeye tıklayın. (Bu seçenekler bu makalenin devamında ayrıntılı olarak açıklanacaktır.)

  7. İlişkiyi oluşturmak için Oluştur'a tıklayın.

  8. İlişkilendirmek istediğiniz her tablo çifti için 4'üncü ve 7'nci adımları yineleyin.

    İlişkileri Düzenle iletişim kutusunu kapattığınızda, Access düzeni kaydetmek isteyip istemediğinizi sorar. Düzeni kaydetseniz de kaydetmeseniz de, oluşturduğunuz ilişkiler veritabanına kaydedilir.

    Uyarı

    Yalnızca tablolarda değil sorgularda da ilişkiler oluşturabilirsiniz. Ancak bilgi tutarlılığı sorgularla zorlanmaz.

Çoktan çoğa ilişki nasıl tanımlanır?

Çoka çok ilişki oluşturmak için şu adımları izleyin:

  1. Çoka çok ilişkisi olacak iki tabloyu oluşturun.

  2. Üçüncü bir tablo oluşturun. Bu bağlantı tablosu. Birleşim tablosunda, 1. adımda oluşturduğunuz her tablodan birincil anahtar alanlarıyla aynı tanımlara sahip yeni alanlar ekleyin. Birleşim tablosunda, birincil anahtar alanları yabancı anahtarlar olarak işlev görür. Diğer herhangi bir tabloya ekleyebileceğiniz gibi birleşim tablosuna başka alanlar da ekleyebilirsiniz.

  3. Birleşim tablosunda, birincil anahtarı diğer iki tablodaki birincil anahtar alanlarını içerecek şekilde ayarlayın. Örneğin, "TitleAuthors" birleşim tablosunda birincil anahtar OrderID ve ProductID alanlarından oluşur.

    Uyarı

    Birincil anahtar oluşturmak için şu adımları izleyin:

    1. Tabloyu Tasarım görünümünde açın.

    2. Birincil anahtar olarak tanımlamak istediğiniz alanı veya alanları seçin. Bir alan seçmek için, istenen alanın satır seçicisine tıklayın. Birden çok alan seçmek için Ctrl tuşunu basılı tutun ve her alanın satır seçicisine tıklayın.

    3. Access 2002 veya Access 2003'te, araç çubuğunda Birincil Anahtar'a tıklayın.

      Access 2007'de, Tasarım sekmesinin Araçlar grubunda Birincil Anahtar'a tıklayın.

      Uyarı

      Birden çok alanlı birincil anahtardaki alanların sırasının tablodaki bu alanların sıralamasından farklı olmasını istiyorsanız, Dizinler iletişim kutusunu görüntülemek için araç çubuğunda Dizinler'e tıklayın ve ardından PrimaryKey adlı dizinin alan adlarını yeniden sıralayın.

  4. Her birincil tablo ile birleşim tablosu arasında bire çok ilişki tanımlayın.

Referans bütünlüğü

Bilgi tutarlılığı, Access'in ilişkili tablolardaki kayıtlar arasındaki ilişkilerin geçerli olduğundan ve ilgili verileri yanlışlıkla silmediğinizden veya değiştirmediğinizden emin olmak için kullandığı bir kural sistemidir. Aşağıdaki koşulların tümü doğru olduğunda bilgi tutarlılığı ayarlayabilirsiniz:

  • Birincil tablodan eşleşen alan birincil anahtardır veya benzersiz bir dizine sahiptir.
  • İlgili alanlar aynı veri türüne sahiptir. İki özel durum vardır. Otomatik Sayı alanı, Uzun Tamsayı özellik ayarına sahip bir FieldSizeSayı alanıyla ilişkilendirilebilir ve Çoğaltma Kimliği özellik ayarına sahip bir FieldSizeOtomatik Sayı alanı, Çoğaltma Kimliği özellik ayarına sahip bir FieldSizeSayı alanıyla ilişkilendirilebilir.
  • Her iki tablo da aynı Access veritabanına aittir. Tablolar bağlantılı tablolarsa, Access biçiminde tablolar olmalıdır ve bilgi tutarlılığını ayarlamak için depolandıkları veritabanını açmanız gerekir. Diğer biçimlerdeki veritabanlarından bağlantılı tablolar için bilgi tutarlılığı zorunlu kılınamaz.

Referans bütünlüğünü kullandığınızda aşağıdaki kurallar geçerlidir:

  • İlgili tablonun yabancı anahtar alanına, birincil tablonun birincil anahtarında bulunmayan bir değer giremezsiniz. Ancak, yabancı anahtara Null değeri girebilirsiniz. Bu, kayıtların ilgisiz olduğunu belirtir. Örneğin, var olmayan bir müşteriye atanmış bir siparişiniz olamaz. Ancak, CustomerID alanına Null değeri girerek hiç kimseye atanmamış bir siparişiniz olabilir.
  • İlişkili bir tabloda eşleşen kayıtlar varsa, birincil tablodan kayıt silemezsiniz. Örneğin, "Siparişler" tablosunda çalışana atanmış siparişler varsa, "Çalışanlar" tablosundan bir çalışan kaydını silemezsiniz.
  • Bu kaydın ilişkili kayıtları varsa, birincil tablodaki birincil anahtar değerini değiştiremezsiniz. Örneğin, "Siparişler" tablosunda söz konusu çalışana atanmış siparişler varsa, "Çalışanlar" tablosundaki bir çalışanın kimliğini değiştiremezsiniz.

Art arda güncelleştirmeler ve silmeler

Bilgi tutarlılığının zorunlu kılındığı ilişkiler için, Access'in güncelleştirmeleri otomatik olarak art arda mı yoksa ilişkili kayıtları art arda mı silmesini istediğinizi belirtebilirsiniz. Bu seçenekleri ayarlarsanız, genellikle bilgi tutarlılığı kuralları tarafından engellenecek silme ve güncelleştirme işlemleri etkinleştirilir. Birincil tablodaki kayıtları sildiğinizde veya birincil anahtar değerlerini değiştirdiğinizde, Access bilgi tutarlılığını korumak için ilgili tablolarda gerekli değişiklikleri yapar.

İlişki tanımlarken İlişkili Alanları Art Arda Güncelleştir onay kutusunu seçmek için tıklarsanız, birincil tablodaki bir kaydın birincil anahtarını her değiştirdiğinizde, Microsoft Access birincil anahtarı tüm ilgili kayıtlardaki yeni değerle otomatik olarak güncelleştirir. Örneğin, "Müşteriler" tablosunda bir müşterinin kimliğini değiştirirseniz, "Siparişler" tablosundaki CustomerID alanı, ilişkinin bozulmaması için bu müşterinin siparişlerinin her biri için otomatik olarak güncelleştirilir. Access, herhangi bir ileti görüntülemeden güncelleştirmeleri otomatik olarak gerçekleştirir.

Uyarı

Birincil tablodaki birincil anahtar bir Otomatik Sayı alanıysa, Otomatik Sayı alanındaki değeri değiştiremediğiniz için İlişkili Alanları Art Arda Güncelleştir onay kutusunun seçilmesinin hiçbir etkisi olmaz.

İlişki tanımlarken İlişkili Kayıtları Art Arda Sil onay kutusunu seçerseniz, birincil tablodaki kayıtları her sildiğinizde, Access ilgili tablodaki ilgili kayıtları otomatik olarak siler. Örneğin, "Müşteriler" tablosundan bir müşteri kaydını silerseniz, müşterinin tüm siparişleri "Siparişler" tablosundan otomatik olarak silinir. (Bu, "Sipariş Ayrıntıları" tablosundaki ve "Siparişler" kayıtlarıyla ilişkili kayıtları içerir). İlişkili Kayıtları Art Arda Sil onay kutusu seçiliyken bir form veya veri sayfasından kayıtları sildiğinizde, Access ilgili kayıtların da silinebileceği konusunda sizi uyarır. Ancak, silme sorgusu kullanarak kayıtları sildiğinizde, Access ilgili tablolardaki kayıtları uyarı görüntülemeden otomatik olarak siler.

Birleştirme türleri

Üç birleştirme türü vardır. Bunları aşağıdaki ekran görüntüsünde görebilirsiniz:

Üç birleştirme türünü gösteren Birleştirme Özellikleri'nin ekran görüntüsü.

1. Seçenek bir iç birleşim tanımlar. İç birleşim, yalnızca birleştirilen alanlardaki değerler belirtilen bir koşulu karşılıyorsa, iki tablodaki kayıtların sorgu sonuçlarında birleştirildiği birleştirmedir. Sorguda, varsayılan birleştirme yalnızca birleştirilen alanlardaki değerler eşleşiyorsa kayıtları seçen bir iç birleşimdir.

Seçenek 2, sol dış birleştirmeyi tanımlar. Sol dış birleşim, sağ taraftaki tablodan birleştirilen alanda eşleşen değer olmasa bile sorgunun SQL deyimindeki LEFT JOIN işleminin sol tarafındaki tüm kayıtların sorgu sonuçlarına eklendiği birleşimdir.

3. seçenek bir sağ dış birleşim tanımlar. Sağ dış birleşim, sorgunun SQL deyimindeki RIGHT JOIN işleminin sağ tarafındaki tüm kayıtların, sol taraftaki tablodan birleştirilen alanda eşleşen değer olmasa bile sorgunun sonuçlarına eklendiği birleşimdir.