Soru Tanımlayıcı veya tanımlayıcı olmayan ilişkilere karar vermekte sorun


Bu soruyu okudum: Tanımlayıcı ve tanımlayıcı olmayan ilişkiler arasındaki fark nedir?

Ama hala emin değilim ... Sahip olduğum şey üç masa.

  1. Kullanıcılar
  2. Nesneler
  3. Resimler

Bir kullanıcı birçok nesneye sahip olabilir ve ayrıca her nesne için birçok resim yayınlayabilir. Benim bağırsak duygularım bunun tanımlayıcı bir ilişki olduğunu söyler, çünkü userID'ye nesne tablosunda ihtiyacım olacak ve resim tablolarında objectID'ye ihtiyacım olacak ...

Yoksa yanılıyor muyum? Diğer konudaki açıklamalar, veri tabanının gerçek hayatta nasıl bağlandığından değil de, kodun daha sonra kodlandıktan sonra nasıl yorumlandığını teorik olarak açıklamaktadır. Veritabanını nasıl oluşturacağımı düşünürken tanımlayıcı olmayanlara karşı tanımlama kararını nasıl yapacağım konusunda biraz kafam karıştı.


23
2017-08-01 15:21


Menşei




Cevaplar:


İkisi de ilişkiyi tanımlamak gibi geliyor. Bire bir veya bire çok ve çoktan çoğa terimleri duyduysanız, bire-ilişkiler Hangi ilişkileri belirleme, ve çoktan çoğa ilişkiler Hangi tanımlayıcı olmayan ilişkiler.

  • Çocuk ebeveynini tanımlarsa, tanımlayıcı bir ilişkidir. Verdiğiniz bağlantıda, bir telefon numaranız varsa, kime ait olduğunu bilirsiniz (yalnızca bir kişiye aittir).

  • Çocuk ebeveynini tanımlamazsa, tanımlayıcı olmayan bir ilişkidir. Linkte, durumlardan bahseder. Bir havayı ruh halini temsil eden bir tablo olarak düşünün. "Mutlu" belirli bir kişiyi değil, birçok insanı tanımlamaz.

DüzenleDiğer gerçek hayat örnekleri:

  • Fiziksel bir adres tanımlayıcı olmayan bir ilişkidir, çünkü birçok kişi bir adreste bulunabilir. Öte yandan, bir e-posta adresi (genellikle kabul edilir) tanımlayıcı bir ilişkidir.
  • Sosyal Güvenlik Numarası tanımlayıcı bir ilişkidir, çünkü sadece bir kişiye aittir
  • Youtube videolarına yapılan yorumlar, yalnızca bir videoya ait oldukları için ilişkileri tanımlamaktadır.
  • Bir resmin aslının sadece bir sahibi (tanımlayıcı) vardır, birçok insan da resmin yeniden basımına sahip olamaz (tanımlayıcı olmayan).

53
2017-08-01 15:44



Aynı şüphe olduğu gibi 1: 1 ve m: m için 1 + 1 için. - Tristian
Bu harika bir açıklamaydı. Bir veritabanı şemasına bakıyordum ve tanımlayıcı ilişkiyi ve tanımlayıcı olmayan ilişkileri betimliyordu, ama ben onların tanımlarını anlamıyordum. Bu daha mantıklı. Teşekkürler. - DataGirl
Açıklamanıza bakıldığında, MySQL Workbench Model / EER / UML editörü (resmi bir MySQL ürünü) nasıl oluşturmanıza yardımcı olur one-to-one identifying, one-to-one non-identifying, one-to-many identifying, one-to-many non-identifying ilişkiler? Ve tek tip many-to-many editörde oluşturabileceğiniz ilişki bir identifying ilişkisi. Açıklamanız bağlamında hiç mantıklı değil ... - Jake Wilson
Bu iyi bir örnek değildir ve yanıltıcıdır. @Jakobud bunun neden yanlış olduğuna dair çok güzel bir örnek verdi. Bakınız stackoverflow.com/questions/762937/... iyi bir açıklama için. - smcjones


Bunu görselleştirmenin daha kolay bir yolunun, çocuk kaydının ebeveyn olmadan var olup olmadığını kendinize sormak olduğunu düşünüyorum. Örneğin, bir sipariş satır öğesi mevcut bir sipariş başlığı gerektirir. Bu nedenle, bir sipariş satır öğesi, anahtarın bir parçası olarak sipariş başlığı tanımlayıcısına sahip olmalı ve dolayısıyla, bu tanımlayıcı bir ilişkinin bir örneğidir.
Diğer yandan, bir kişinin birkaç telefon numarasına sahip olmasına rağmen, telefon numaraları bir kişinin sahibi olmadan var olabilir. Bu durumda, telefon numarasının sahibi olan kişi, telefon numarasının sahibi ne olursa olsun mevcut olabileceğinden, telefon numarası sahibi olmayan veya olmayan bir ilişkidir (bu nedenle, telefon numarası sahibi kişi boş olabilir, oysa sipariş satır öğesi örneğinde) sipariş üstbilgisi tanımlayıcısı boş olamaz.


9
2017-11-07 03:43





NickC Said: Bire-ilişkiler ilişkileri belirliyor ve çoktan-çoğa ilişkileri tanımlayıcı olmayan ilişkiler

Açıklama benim için tamamen yanlış görünüyor. Alabilirsin:

  • Ono-bir-olmayan tanımlayan ilişkiler
  • Bire Çok Olmayan Tanımlamayan İlişkiler
  • Bire Bir Tanımlayan İlişkiler
  • Bire Çok Tanınan İlişkiler
  • Çoktan Çok Tanınan İlişkiler

Aşağıdaki tablolara sahip olduğunuzu hayal edin: customer, products ve feedback. Hepsi dayanmaktadır customer_id üzerinde var olan cutomer tablo. Yani, tarafından NickC tanımı, Çoktan-Çok Belirleyici İlişkilerin herhangi bir türü olmamalıdır, ancak benim örneğimde, bunu açıkça görebilirsiniz: Geri Bildirim, yalnızca ilgili Ürün var ise ve Müşteri tarafından satın alınmışsa, bu nedenle Müşteri, Ürünler ve Geribildirimlerin Tanımlanması gerekir..

Bir göz atabilirsin MySQL KılavuzuMySQL Workbench'de Yabancı Anahtarların nasıl ekleneceğini açıklıyor.


6
2018-02-13 12:52



Hayır, bu yanlış. Örneğinizdeki belirleyici ilişkiler aslında bire-çok ilişkileridir. Bire-çokluğun ilişkisinin her bir tarafı aslında bire-bir ilişkidir ve müşteri-ürün ilişkisinin belirleyici kısmı müşteri ve müşteridir. ürün alımları. bir ürün satın alımı Bir müşteriyi (alıcı) tanımlar, ancak bir ürünün kendisi yoktur. Çoktan çoğa ilişkiniz varsa, tek bir sahibi tanımlayamazsınız; Bu yüzden doğası gereği belirsizdir. - Nicole


Mehdi, içgüdülerin doğru. Bu yinelenen bir sorudur ve bu yukarı dönük cevap doğru veya eksiksiz değildir. Buradaki en iyi iki cevaba bakın: Tanımlayıcı olmayan tanımlamak arasındaki fark

Tanımlayıcı olmayanı tanımlamak, kimlikle ilgisi yoktur. Ebeveyn olmadan çocuk kayıtlarını kendiniz sorabilirsiniz. Cevap evet ise, tanımlayıcı değildir.

Çocuğun birincil anahtarının ebeveynin yabancı anahtarını içerip içermediği ana konu. Tanımlayıcı olmayan ilişkide çocuğun birincil anahtarı (PK) yabancı anahtarı (FK) içeremez.

Kendinize bu soruyu sorun

  • Ebeveyn kaydı olmadan çocuk kaydı yapılabilir mi?

Çocuk ebeveyn olmadan var olabiliyorsa, ilişki tanımlayıcı değildir. (Teşekkür ederim MontrealDevOne daha açık bir şekilde belirtmek için)

Bire bir tanımlayan ilişki

Sosyal güvenlik numaraları bu kategoriye giriyor. Örneğin, sosyal güvenlik numaralarının bir kişi ile var olamayacağını hayal edin (belki de gerçekte olabilir, ancak veritabanımızda değil). person_id için PK olurdu kişi gibi sütunlar dahil tablo isim ve adres. (hadi basit olsun). sosyal Güvenlik numarası tablo içerir ssn sütun ve person_id yabancı anahtar olarak sütun. Çünkü bu FK PK için sosyal Güvenlik numarası Tablo tanımlayıcı bir ilişkidir.

Bire bir tanımlayıcı olmayan ilişki

Büyük bir ofis kompleksinde ofis PK ile oda numaralarını ve bina numaralarını içeren bir tablo ve ayrı bir tablo işçi tablo. Çalışan masası (çocuk) bir FK office_id sütunu ofis tablo PK. Her çalışanın sadece bir ofisi var ve (bu örnekte) her ofisin sadece bir çalışanı var, bu da ofislerin çalışan olmadan var olabileceği ve çalışanların ofisleri değiştirebileceği ya da sahada çalışabileceği için kimlik belirleyici olmayan bir ilişki.

Bire çok ilişkiler

Bire-çok ilişkiler aynı soruyu sorarak kolayca kategorize edilebilir.

Çoktan çoğa ilişkiler

Çoktan çoğa ilişkiler her zaman ilişkileri tanımlamaktadır. Bu sezgisel karşıt görünebilir, ama benimle birlikte. İki tablo al kitaplığındaki ve kitaplarHer kütüphanede çok sayıda kitap vardır ve her kitabın bir kopyası birçok kütüphanede mevcuttur.

İşte onu yapan ve ilişkiyi belirleyen: Bunu uygulamak için her tablonun ana anahtarları olan iki sütun içeren bir bağlantı tablosuna ihtiyacınız vardır. Onları ara library_id sütun ve ISBN sütunu. Bu yeni bağlantı tablosunun ayrı bir birincil anahtarı yok, ancak bekleyin! Bağlama tablosundaki yinelenen kayıtlar anlamsız olacağından, yabancı anahtarlar bağlantı tablosu için çok sütunlu bir birincil anahtar olur. bağlantılar Ebeveynlerle birlikte bulunamaz; bu nedenle, bu tanımlayıcı bir ilişkidir. Biliyorum, doğru mu?

Çoğu zaman ilişkinin türü önemli değildir.

Tüm söylediler, genellikle sahip olduğunuz hakkında endişelenmenize gerek yok. Her tabloya doğru birincil ve yabancı anahtarları atayın ve ilişki kendini keşfedecektir.

DÜZENLE: NicoleC, Okudum Cevap sen bağlantılısın ve benimkiyle aynı fikirde. SSN ile ilgili meselesini alıyorum ve bunun kötü bir örnek olduğunu kabul ediyorum. Orada daha açık bir örnek düşünmeye çalışacağım. Ancak, bir veri tabanı ilişkisini tanımlarken gerçek dünya benzetimlerini kullanmaya başlarsak, analojiler her zaman bozulur. Bir SSN'nin bir kişiyi tanımlayıp tanımlamaması, onu yabancı bir anahtar olarak kullanıp kullanmadığın önemli değil.


3
2018-01-08 18:12



Bir çocuk ebeveyn olmadan var olabiliyorsa, o zaman tanımlayıcı değildir. - MontrealDevOne
Bu soruyla ilgili çeşitli çelişkili cevapları okudum (ve bu ve Bu) birkaç defa. Neredeyse tüm cevaplar hala çeşitli şekillerde çatışıyor. Cevabımla aynı fikirde olmayanlar bile sizinkilerle çatışıyor - örneğin, bu kabul edilen cevap üzerinde üçüncü Soru aslında seninkinin tam tersidir. Cevabımın bazı bölümlerinin yanlış ya da yanıltıcı olabileceğini düşünüyorum, ancak bunu güncellemek için bir fikir birliği göremiyorum. - Nicole