En iyi yanıtlayıcılar
SQL'de İlişkili Tablolar

Soru
-
Firmalar, Firma Personelleri, Çalışanlarım ve Tedarikçileri tutan tablolarım var ve ben bunların telefonlarını bir tabloda tutmak istiyorum. Telefonlar tablomda sahipid diye bir kolona bütün bu tabloların PK alanlarını nasıl bağlarım ? Yoksa tüm bu telefonları ayrı tablolardamı tutmalıyım. Aynı şey adresler ve emailler için de geçerli.
- Düzenleyen Serkan Bark 19 Mart 2012 Pazartesi 09:01 baslik
Yanıtlar
-
Merhaba,
Eğer Primary Key değerleriniz tekrar etmeyecek GUID gibi bir değerse doğrudan ilişki kurabilirsin. Fakat Identity gibi tekrar eden sayılsa bir değer ise bir kolon daha açıp telefon numarasının tipini belirtmelisiniz.
http://ismailadar.com/
- Yanıt Olarak İşaretleyen Serkan Bark 19 Mart 2012 Pazartesi 09:01
Tüm Yanıtlar
-
Merhaba,
Eğer Primary Key değerleriniz tekrar etmeyecek GUID gibi bir değerse doğrudan ilişki kurabilirsin. Fakat Identity gibi tekrar eden sayılsa bir değer ise bir kolon daha açıp telefon numarasının tipini belirtmelisiniz.
http://ismailadar.com/
- Yanıt Olarak İşaretleyen Serkan Bark 19 Mart 2012 Pazartesi 09:01
-
Bunun icin ara tablo gerekiyor ne yazik ki. Ayni telefon ve/veya adres birden fazla kisiye ait olabilir. Ayni zamanda kisilerin birden fazla telefon/adresleri olabilir.
(Firma): FirmaId, FirmaAdi ....
(Telefon): TelefonId, ulkeKodu, sehirKodu, telNo, dahili ...
(AraTablo): FirmaId, TelefonID, ... opsiyonel diger alanlar (not: eger 3. bir kolon yok ise Entity framework bu ara tabloyu gizliyor ve yerine sadece diger tablolarda navigasyon propertyleri oluyor:
FirmaAdi, ..., Telefonlar (List<Telefon>)
gibi.
Sanirim AdventureWorks ornek veritabaninda bu sekilde adresler vardi.
Not: Telefonlar, adresler gibi antiteler icin ayni sey gecerli. Ancak email sanirim kisiye ozel (nadir durumlarda ayni emaili birden fazla kisi kullanabilir). Neredeyse primary key gibi. Dogrudan Firma, Kisi tablosu ile baglantili olmasi daha efektif gorunuyor (emailTablo: kisiID, email).- Düzenleyen CetinBasoz 20 Mart 2012 Salı 08:28