Burada amacım, "Employee"
, "ID"
çoklu kayıtlarına bir başvuru olması için COLUMNS ("assignedTo" , "loggedBy" , "completedBy")
olmasıdır. Çok fazla ilişki olabileceğini farz etmeliyim, ancak bunun nasıl yapıldığını bilmiyorum uygulanmalı. "assignedTo"
, "loggedBy"
, "completedBy"
birden çalışanları tarafından icra edilebilir (bu aynı zamanda bir çalışan olabilir ima her ederse1 Birincil Anahtar birden çok sütuna işaret ediyor
cevap
Size @Bas önerdiği gibi/birleşme tabloları birleştirmek kullanmanız gerekir gibi görünüyor. için önemli olan
(My diyagram sanmıyorum diğer bazı tabloların dışarıda bırakır:
Ben böyle bir şey bakmak gerekir istiyorum ilişkileri yaratma fiili tabloları inanıyoruz Kavşak tabloları kullanan çoktan çoğa ilişkisi kavramını gösterir.)Kayıt masanızda, sessionBy, assignTo ve completedBy sütunlarını kaldırdığımı fark edersiniz. Çok fazla ilişki kurduğunuzda onlara ihtiyacınız yok. Tablolar arasındaki bu bağlantılar hakkında bilgi, bağlantı tablolarında saklanır.
Neden bunu yapmak zorunda mıyız?
Sadece bir örnek olarak AssignedTo ilişkiyi kullanalım ... biz Görevler tablosundaki Çalışanların kimlikleri için sütunlar yapamaz bir görev için atanabilir kaç Çalışanlar bilmediğimize
. Aynı şekilde, bir Çalışana kaç tane Görev verilebileceğini bilmediğimizden, Çalışanlar tablosundaki Görevler'in kimlikleri için sütun oluşturamayız. Eğer denediysek, yeterli sütunumuz olmayabilir ya da çok fazla sütunumuz olabilir. Bunların ikisi de iyi sorunlardır. Bunun yerine, çoktan çoğa ilişkileri olan tablolar arasında bağlantı kurmak istediğimizde, ilgili bağlantı tablosuna yeni bir giriş koyarız. Herhangi bir sorun olmadan istediğimiz kadar bağlantı veya az bağlantı ekleyebiliriz. Biraz daha mantıklı
Umarım. İlişkisel bir veritabanında çoktan çoğa ilişkilerini modellemeye çalışırken, nesneler kesinlikle kafa karıştırıcı olabilir.
Sonunda bunun nasıl çalıştığını anladım xD biraz zaman aldı ama buna değer. Tüm yardımın ve zamanın için sana yeterince teşekkür edemem. –
Harika. Bu duyu duyduğuma sevindim! – Ectropy
:
İşte böyle benim veritabanı şu anda göründüğünü gösteren benim ERD bir ekran görüntüsü bir var birden "assignedTo"
, "loggedBy"
veya "completedBy"
) o) Eğer önerildiği gibi (bir çok-çok ilişki olduğu anlamına gelir. (Bu 'ortak' tabloları ile Sütunlarınızın yerini alacak) "assignedTo"
, "loggedBy"
ve "completedBy"
her biri için çok-çok ilişki 'müşterek' tablosunu yapmak Bunu gerçekleştirmek için. Bunu, 'EmployeeTask'
tablonuzla aynı şekilde yaparsınız. Bu 'ortak' tablo da 'İlişkilendirilmiş varlık' olarak adlandırılır. Wikipedia'ya bakınız: https://en.wikipedia.org/wiki/Associative_entity
Not: Bir ERD 'katılmak' tablo içermemelidir. Her iki tarafta da bire çok ilişki iki “karga ayak” kullanılarak modellenmiştir. Bu 'eklem' tabloları sadece 'Fiziksel Veri Modeli' (PDM) içinde görünecektir.
bu "Görev" tablosunda "assignTo", "loggedBy" ve "completedBy" 'Birincil anahtarları yapmamı gerektirir? –
@ T.Pilvelis Hayır, bunu yapma. Yabancı tuşlara bakın: http://www.w3schools.com/sql/sql_foreignkey.asp. Vikipedi tabloları https://en.wikipedia.org/wiki/Associative_entity – Bas
Gerçekten de, ERD'nizde zaten birleşim/birleştirme tablosuna çok benzer bir şey var gibi görünüyor, yani “ÇalışanTask” tablo Bu tablonun amacı nedir? Görevlerin birçok çalışana ait olduğunu göstermeye çalışıyor gibi görünüyor ve bir çalışanın birçok görevi olabilir. Tanımladığınız 3 çoktan çoğa ilişkiyi yapmak için @Bas önerdiği gibi 3 bağlantı tablosuna ihtiyacınız olacaktır. – Ectropy
- 1. 2 birincil anahtar başvuruyor 1 birincil anahtar
- 2. Birden çok sütun üzerindeki birincil anahtar anahtarı
- 3. Aynı DB sütuna ait birden çok alan
- 4. Birincil anahtar olmadan yeni bir sütuna nasıl katılınır?
- 5. Tapply kullanarak sütuna birden çok işlev uygulayın
- 6. Birden çok anahtar birden çok değer
- 7. Birden çok sütuna nasıl dahil edilir?
- 8. Bir sütunu birden çok sütuna bölme
- 9. Datalist satırını birden çok birincil anahtarla silme
- 10. Birden çok sütuna yapışmayı nasıl önleyebilirim?
- 11. jQuery bir şeye işaret ediyor
- 12. Redis, anahtar arama için O (1) zamanını nasıl talep ediyor?
- 13. Java: InvalidAlgorithmParameterException Birincil boyut, birden çok 64
- 14. data.table R - birden çok işlevi birden fazla sütuna uygulama
- 15. PerformanceTiming.responseStart, HTML veya üstbilgileri işaret ediyor mu?
- 16. Bu arabellek neden düzenlenemez baytlara işaret ediyor?
- 17. Birincil anahtar ihlali kısıtlaması
- 18. Birden çok etki alanı işaret eden kök klasörün web.config
- 19. Birincil birincil anahtar sütununa katılmayı nasıl oluşturabilirim?
- 20. nasıl bir birincil anahtar
- 21. Realm birincil anahtar geçişi
- 22. yeni birincil anahtar
- 23. MonoGame, nunit.framework'ın desteklenmeyen bir sürümüne işaret ediyor
- 24. MySQL Birden çok sütunu bir 'geçici' sütuna birleştirin
- 25. CakePHP'de yabancı anahtar değil birincil anahtar
- 26. dynamoDB'nin birincil anahtar listesini alın
- 27. Pandas hücresinde bir listeyi birden çok sütuna bölme
- 28. Cassandra UPDATE birincil anahtar değeri
- 29. Pandalar Birden çok hedef sütunu sütunlara birden çok hedef sütuna dönüştürün
- 30. Oracle'da iki sütunlu birincil anahtar?
Bir Görev'in kaydedilebildiğini söylüyorsunuz Gibi, birden çok Çalışanı çalıştırabilir, veya birden fazla Çalışanı çalıştırabilir ve benzer şekilde Çalışanların oturum açtıkları, atandıkları veya tamamladıkları birden çok şey olabilir mi?Bu sorunun doğru anlaşılması mı? – Ectropy
Bu doğru –