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

Özgün KB numarası: 304466

Not

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 aşağıdaki konuları içerir:

  • Tablo ilişkileri nedir?
  • Tablo ilişkileri türleri
    • Bire çok ilişkiler
    • Çoka çok ilişkileri
    • Bire bir ilişkiler
  • Tablolar arasındaki ilişkileri tanımlama
    • Bire çok veya bire bir ilişki tanımlama
    • Çoka çok ilişkisi tanımlama
  • Bilgi tutarlılığı
  • Art arda güncelleştirmeler ve silmeler
  • Birleştirme türleri

Tablo ilişkileri nedir?

İlişkisel veritabanında ilişkiler, yedekli verileri engellemenizi sağlar. Örneğin, kitaplar hakkındaki bilgileri izleyecek 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/Posta Kodu gibi yayımcı hakkında depolamak isteyebileceğiniz bilgiler de vardır. Tüm bu bilgileri "Başlıklar" tablosunda depolasaydınız, yayımcının yazdıracağı her başlık için yayımcının telefon numarası yinelenecekti.

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

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 bulunmayan bir yayımcı için veritabanına başlık eklenemez.

Veritabanındaki mantıksal ilişkiler, verileri verimli bir şekilde sorgulamanıza ve raporlar oluşturmanıza olanak tanır.

Tablo ilişkileri türleri

İlişki, genellikle her iki tabloda da aynı ada sahip sütunlar (veya alanlar) olan anahtar sütunlarındaki verileri 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.

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 çok ilişkiler

Bire çok ilişki 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ü.

Çoka çok ilişkileri

Ç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ı, hem A tablosundan hem de B tablosundan yabancı anahtarlardan oluşur. Örneğin, "Yazarlar" tablosu ve "Başlıklar" tablosunun, bu tabloların her birinden "TitleAuthors" tablosuna bire çok ilişkisiyle tanımlanan çoka çok ilişkisi vardır. "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 B tablosunda birden fazla eşleşen satıra sahip olamaz ve bunun tersi de geçerlidir. İlişkili sütunların her ikisi de birincil anahtarsa veya benzersiz kısıtlamaları varsa bire bir ilişki oluşturulur.

Bu tür bir ilişki yaygın değildir çünkü bu şekilde ilgili 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ıtma.
  • Kısa ömürlü olan ve tabloyu silerek kolayca silinebilen verileri depolayın.
  • Ana tablonun yalnızca bir alt kümesi için geçerli olan 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ı bir 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 DaAlanÖzelliğiLong Integer ise bir Otomatik Sayı alanıyla Sayı alanını eşleştirebilirsiniz. Her iki eşleşen 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ı sekmesindeki Göster/Gizle grubunda İlişkiler'e tıklayın.

  3. Veritabanınızda henüz hiç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 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 bilgi sahibi olmanız gerekiyorsa, soru işareti düğmesine tıklayın ve sonra da öğeye tıklayın. (Bu seçenekler bu makalenin ilerleyen bölümlerinde ayrıntılı olarak açıklanacaktır.)

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

  8. İlişkili olmasını istediğiniz her tablo çifti için 4 ile 7 arasındaki 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.

    Not

    Yalnızca tablolarda değil sorgularda da ilişki oluşturabilirsiniz. Ancak, sorgularla bilgi tutarlılığı zorunlu tutulmaz.

Çoka çok ilişkisi tanımlama

Çoka çok ilişkisi 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 birleşim masası. 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 çalışır. Diğer tüm tablolara ekleyebileceğiniz gibi birleşim tablosuna da başka alanlar 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.

    Not

    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'de 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.

      Not

      Birden çok alanlı birincil anahtardaki alanların sırasının tablodaki bu alanların sırasına göre farklılık göstermesini 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.

Bilgi tutarlılığı

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 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 ilgili olabilir.
  • 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.

Bilgi tutarlılığı 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ğer girebilirsiniz. Bu, kayıtların ilişkisiz 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 kayıtta ilgili 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 ilgili kayıtları otomatik olarak art arda mı yoksa 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 tıklayarak seçerseniz, 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" tablosundaki bir müşterinin kimliğini değiştirirseniz, "Siparişler" tablosundaki CustomerID alanı, bu müşterinin siparişlerinden her biri için otomatik olarak güncelleştirilir ve böylece ilişki bozulmaz. Access herhangi bir ileti görüntülemeden güncelleştirmeleri art arda ekler.

Not

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 "Siparişler" kayıtlarıyla ilgili 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 sizi ilgili kayıtların da silinebileceği konusunda uyarır. Ancak, silme sorgusu kullanarak kayıtları sildiğinizde, Access bir uyarı görüntülemeden ilgili tablolardaki kayıtları 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 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.

2. Seçenek, sol dış birleşimi 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 sorgunun sonuçlarına eklendiği birleşimdir.

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