SORU
11 Mayıs 2010, Salı


Hala Olmayan ve Tespit İlişkileri vs Belirlenmesi Konusunda kafası Karışık

Bu yüzden, olmayan tanımlama veritabanı tasarımı, ilişkiler vs. belirlenmesi okudum, ve cevap bir dizi bana ÇOK aykırı gibi görünüyor. Burada bakıyorum iki soru

  1. What's the Difference Between Identifying and Non-Identifying Relationships
  2. Trouble Deciding on Identifying or Non-Identifying Relationship

Her soruya en iyi cevapları bakıyor, tanımlayıcı bir ilişkinin iki farklı fikir almak için görünür.

İlk soruya yanıt tanımlayıcı bir ilişki "alt tabloda bir satır varlığını üst tablodaki bir satır bağlıdır." bir durumu anlatmaktadır Verilen bu örnek, "Bir yazarın çok kitap (1-n ilişki) yazabilir, ama bir kitap, bir yazar olmadan var olamaz." Bu bana mantıklı geliyor.

Yanıt, söylediği gibi, kafam karıştı, eğer bir alt üst edilerek", tanımlayıcı bir ilişki vardır." iki soruya okuduğumda ancak, Cevap sonra Social Security Number gibi örnekler (Kişi tanımlama) vermek için gidiyor, ama bir adres birçok kişi bir adrese yaşayabilir çünkü). Bana bu anahtarı olmayan birincil anahtar birincil arasında karar bir kasa gibi duruyor.

Kendi içimden bir ses duygu (ve diğer siteler üzerinde ek araştırma) ilk soru ve cevap doğru olduğunu gösteriyor. Ancak, veritabanı tasarımı anlamaya çalışıyorum gibi yanlış bir şey öğrenmek istemiyorum gibi ileriye doğru devam ettim önce kontrol etmek istedim. Şimdiden teşekkürler.

CEVAP
11 Mayıs 2010, Salı


Tanımlayıcı bir ilişki teknik tanımı bir çocuğun yabancı anahtar, birincil anahtar bir parçası olmasıdır.

CREATE TABLE AuthoredBook (
  author_id INT NOT NULL,
  book_id INT NOT NULL,
  PRIMARY KEY (author_id, book_id),
  FOREIGN KEY (author_id) REFERENCES Authors(author_id),
  FOREIGN KEY (book_id) REFERENCES Books(book_id)
);

Gördün mü? book_id Yabancı bir anahtarı vardır, ama aynı zamanda birincil anahtar sütun. Yani bu tablo başvurulan Tablo Books tanımlayıcı bir ilişki vardır. Aynı şekilde Authors tanımlayıcı bir ilişki vardır.

YouTube'da bir yorum video ile ilgili tanımlayıcı bir ilişki vardır. video_idgerekirComments tablonun birincil anahtarının bir parçası olmak.

CREATE TABLE Comments (
  video_id INT NOT NULL,
  user_id INT NOT NULL,
  comment_dt DATETIME NOT NULL,
  PRIMARY KEY (video_id, user_id, comment_dt),
  FOREIGN KEY (video_id) REFERENCES Videos(video_id),
  FOREIGN KEY (user_id) REFERENCES Users(user_id)
);

Bu yaygın bir uygulama bu gün bileşik birincil anahtar yerine: sadece seri yedek anahtarı kullanma çünkü bunu anlamak zor olabilir

CREATE TABLE Comments (
  comment_id SERIAL PRIMARY KEY,
  video_id INT NOT NULL,
  user_id INT NOT NULL,
  comment_dt DATETIME NOT NULL,
  FOREIGN KEY (video_id) REFERENCES Videos(video_id),
  FOREIGN KEY (user_id) REFERENCES Users(user_id)
);

Bu tablolar tanımlayıcı bir ilişki olduğu durumlarda belirsiz.

İstiyorumdeğilSSK tanımlayıcı bir ilişki temsil düşünün. Bazı insanlar var ama bir SSK yok. Diğer insanlar yeni bir SSN almak için dosya olabilir. Yani SSN gerçekten sadece bir nitelik, kişinin birincil anahtar bir parçası değil.


@Niels: Re yorum

Eğer bileşik bir birincil anahtar yerine bir yedek anahtar kullanırsanız kullanın tanıtmadan olmayan ilişki tanımlama arasında önemli bir fark yok mu ?

Sanırım öyle. Bu değiştirmedik çünkü Evet demeye çekiniyorummantıklıbir yedek anahtar kullanarak tablolar arasında ilişki. Yani, hala varolan bir Video referans olmadan bir Açıklama yapamam. Ama bu sadece video_id NOT NULL olması gerektiği anlamına gelir. Ve mantıksal açıdan, benim için, gerçekten tanımlayan ilişkiler hakkında noktasıdır.

Ama iyi tanımlayan ilişkilerin fiziksel bir yönü var. Ve bu aslında o kadar yabancı anahtar sütun parçası olduğu için birincil anahtar (birincil anahtar değil mutlaka bir bileşik anahtar olabilir, bir tek sütun hangisi birincil anahtar Yorumların yanı sıra yabancı anahtar Videoları tablo, ama bu demek kaydedebilir, tek bir yorum başına video).

Tanımlama ilişkiler varlık-ilişki iyiliği için önemli bir diyagram gibi görünüyor, ve bu GUI, veri modelleme araçları geliyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • akalyne

    akalyne

    13 Mayıs 2009
  • BurnedInDotCom

    BurnedInDotC

    3 NİSAN 2010
  • FOSDEM

    FOSDEM

    13 Ocak 2009