2016-03-28 36 views
0

Buradaki amacım, "Employee" adresinin "EmployeeContactInformation" tablosunda aynı Primary Key'e 2 başvuru içermesidir. Bunun nedeni, çalışanımın aynı tablonun 2 farklı kopyasını bulundurmasını istiyorum. Örneğin.için 1, home contact info için başka.2 birincil anahtar başvuruyor 1 birincil anahtar

Bunu nasıl uygularım ve hangi ilişkileri kullanırdım?
Çoktan 1'e kadar mıyım?

Current database screenshot

cevap

0

Veritabanınızın tasarımını değiştirelim:

  • ContactInfoTypes adlı bir tablo oluşturun. İstediğiniz her ContactInfoTypes tanımlarını tutacaktır (sizin durumunuzda: workContactInfo ve homeContactInfo). İki sütun (contactTypeId, contactTypeName) olacaktır.
  • EmployeeContactInfo TABLO'nuzdaki ContactInfoType (DATATYPE numarası) olarak adlandırılacak fazladan bir sütun ekleyin. Sütun ContactInfoType Yukarıda TABLO ContactInfoTypes

TABLO bir kişi eklemek bir Foreign-Key değer yer alır: EmployeeContactInfo, sen Insert iki sıra (workContactInfo ve homeContactInfo ile birine karşı depolanmış sayı değeri ile bir) gerekir.

0
  1. Çalışan (ev ve bahsettiğin gibi çalışırlar) çeşitli iletişim Infos olabilir Güncel veritabanı ekran görüntüsü. Bu nedenle, ilişki bire çok olmalıdır.
  2. Bunu modellemek için ilişkinin bir tarafına yabancı bir anahtar eklemelisiniz. Bu nedenle, Çalışanınİletişim tablosuna bir worker_id sütunu eklemelisiniz. Bu şekilde, her çalışanın iletişim satırı bir çalışanına bağlanacaktır
  3. Çalışan tablosundaki "İş uzantısı" sütunu Çalışan Kişiler tablosuna taşınabilir ve bir ev telefonu için olabilecek bir telefon numarası uzantısı olduğu için "uzantı" olarak yeniden adlandırılabilir veya EmployeeContact tablosundaki iş telefonu
  4. "Ev telefonu numarası" sütun tablo hem ev için çünkü sadece "telefon numarası" olarak değiştirildi ve
  5. çalışmaları hakkında bilgi kaydeder EmployeeContact tabloda başka bir sütun kurtarmak mı çalışması gerektiğini/home
+0

Yorumlarınızı uyguladım ve sorun yok. Ancak sistemim çalışanlara ulaşarak çalışacak, o zaman iletişim bilgilerinin türünü seçebileceksiniz. Sağladığınız cevapla. Bu mümkün olacak mı? –

+0

Bir workerId Select * From employee_contact_info where employee_id = ? varsa çalışan iletişim bilgilerine erişmek için bu gibi bir sorgu kullanabilirsiniz Soru işareti – abhaybhatia

+0

nerede olduğunu başka bir şey arıyorsanız bana bildirin – abhaybhatia