NiHibernate'de ara tablo nedir nasıl kurulur? bir de sql de böyle tabloyu tasarlarken nelere dikkat etmeliyiz? many to many kavramlarını nerede ve nasıl kullanırız açıklar mısınız?

soruldu: 27 Oca '13, 04:40

ercet00ilk's gravatar image

ercet00ilk
994435662
cevap kabul oranı: 11%

1

aslında 3 soru da aynı anlamda degil mi? Sizin merak ettiginiz many-to-many ilişkili tablolar degil mi?

(27 Oca '13, 04:59) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

evet. bu konuda yeni olduğum için kaçırdığım bir nokta olmasın istemiyorum.

(27 Oca '13, 05:02) ercet00ilk ercet00ilk's gravatar image

Öneğin Kullanıcılar ve Roller diye iki tablo olduğunu düşünelim. Bir kullanıcının birden fazla rolü olacağını düşünürsek. Mesela;

Roller

id | rol_adi
-------------
 1 |   rol_1
 2 |   rol_2
 3 |   rol_3

Kullanıcılar

id | kullanici_adi | roller
------------------------------------------
 1 |  kullanıcı_1  |  rol_1,rol_2,rol_3
 2 |  kullanıcı_2  |  rol_1,rol_2
 3 |  kullanıcı_3  |  rol_1
 4 |  kullanıcı_4  |  rol_2

gibi bir şekilde olması

Ama bir ara toblo kullanırsak

Roller (id primary key)

id | rol_adi
-------------
 1 |   rol_1
 2 |   rol_2
 3 |   rol_3

Kullanıcılıar (id primary key)

id | kullanici_adi
-------------------
 1 |  kullanıcı_1
 2 |  kullanıcı_2
 3 |  kullanıcı_3
 4 |  kullanıcı_4

KullanıcıRoller (rol_id foreign key ve roller tablosuna referans ediyor || kullanıcı_id foreign key kullanıcılar tablosuna referans ediyor. Ayrıca ikisi beraber primary key)

rol_id | kullanıcı_id
----------------------
   1   |      1 
   2   |      1 
   3   |      1 
   1   |      2 
   2   |      2 
   1   |      3 
   2   |      4

şeklinde bir tanımlama yaparsanız, birbirinden bagımsız olarak yeni kullanıcı ve yeni rol eklerken bunlar için ayrı ayrı kontroller yapmazsınız. Sadece KullanıcıRoller tablosuna ekleme cıkarma yapmanız yeterli olacaktır.

Ayrıca her rol adını tekrardan her kullanıcı için defalarca yazmaktanda kurtulmuş oluruz. NHibernate ve ya entitiy framework ile kullanımda aşırı derecede avantajları vardır. role gore kullanıcı bulma, kullanıcıya gore rol bulma. kullanıcıya rol ekleme rol cıkarma. role kullanıcı ekleme cıkarma gibi işlemlerde, frameworkler inanızlmaz bir esneklik saglıyor. veri tekrarı ve kod tekrarlarını engelliyor.

NOT:KullanıcıRoller tablosunda iki id birlikte primary key tanımlarsanız framework ile kullanmanın avantajını gorursunuz, eger ayrı bir primary key alanı eklerseniz o zaman many-to-many ilişkisinin anlamı kalmaz(framework kullanırken).

NHibernate Örneği

permanent link

cevaplandı: 27 Oca '13, 05:14

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288
cevap kabul oranı: 44%

değiştirildi: 27 Oca '13, 05:28

peki bunları bir primary key id ile bağlamamız falan gerekli mi?

(27 Oca '13, 05:19) ercet00ilk ercet00ilk's gravatar image
1

cevabı guncelledim

(27 Oca '13, 05:24) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

ilginize teşekkür ederim :)

(27 Oca '13, 05:30) ercet00ilk ercet00ilk's gravatar image

Rica ederim her zaman...

(27 Oca '13, 05:32) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×158
×47
×19
×13
×4

Soruldu: 27 Oca '13, 04:40

Görüntüleme: 1,005 kez

Son güncelleme: 27 Oca '13, 05:32

powered by BitNami OSQA