Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Veritabanları & SQL

Cevapla
 
LinkBack Seçenekler
Eski 04/07/2005, 14:04   #1 (permalink)
atg
ggg
 
Üyelik Tarihi: 03/2004
Mesaj: 289
Mutsuz dizayn çııkmazı

Veritabanımda A ve B isimli iki tablom var

A tablomda
-KimlikNo

B Tablomda
-Hediye No

sütünları var, bunlara ek birde ARA_GEÇİŞ isimli tablom var ve tablomda

-A_KimlikNo
-B_HediyeNo

sütünları bulunuyor ve ben şu 3 amaca ulaşmak istiyorum.

1- ARA_GEÇİŞ tablosunda aynı KimlikNo ve aynı HediyeNo'lu bir satır bulunmasını istemiyorum.
2- A tablomdaki herhangi bir KimlikNo silindiğinde ARA_GEÇİŞ tablosunda bu KimlikNo'ya ait bütün satırlar silinsin istiyorum.

3- B tablosundaki bir HediyeNo ARA_GEÇİŞ tablosundaki hiçbir satır tarafından gösterilmediğinde B tablosundaki bu HediyeNo silinsin istiyorum. bir çeşit "many-to-one" ilişkisimi desek?

ilk ikisini basit bir şekilde çözdüm, ama üçünsü biraz kafa karıştırıcı, kendimce bazı çözümler ürettim ama kendimde beğenmedim, bu konuda bana yardımcı olabilir misiniz?
atg hatta değil   Alıntı Yaparak Yanıtla
Eski 04/07/2005, 15:17   #2 (permalink)
cevizin en küçük avatarı
 
pirilti Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2004
Mesaj: 1,540
KaşGöz Mysql kullanıyorsan çözüm budur

1. her ikisini KimlikNo,HediyeNo alanlarını UNIQUE yapacaksın bu mümkün
Alıntı:
ALTER TABLE `ARA_GECIS` DROP INDEX `KimlikNo` ,
ADD UNIQUE `benzersiz` ( `KimlikNo` , `HediyeNo` )
3.ara geçiş tablosunu FOREIGN KEY koyacaksın ve b tablosuna bağlayacaksın ve iki tabloyu birbirine bağlayacaksın bu a tablosunda olmayan satırları ARA_GEÇİŞ tablosuna eklenmesini engeller...
Alıntı:
ALTER TABLE `ARA_GECIS` DROP FOREIGN KEY `FK_1`,
ADD CONSTRAINT `FK_1` FOREIGN KEY `FK_1` (`HediyeNo`)
REFERENCES `B` (`HediyeNo`)
ON DELETE CASCADE
ON UPDATE RESTRICT;
2.ara geçiş tablosundaki kimlikNo alanını a tablosundaki kimlikno alanıyla forenkey anahtarıyla bağlayacaksın ve silindiğinde diğer silmesi için ayarlayacaksın
Alıntı:
ALTER TABLE `ARA_GECIS` DROP FOREIGN KEY `FK_1`,
ADD CONSTRAINT `FK_1` FOREIGN KEY `FK_1` (`kimlikNo`)
REFERENCES `A` (`kimlikNo`)
ON DELETE CASCADE
ON UPDATE RESTRICT;
__________________
Sarp Pirilti Yap Olsun...olmuyorsa başka bir yol/şey dene ve devam et
pirilti hatta değil   Alıntı Yaparak Yanıtla
Eski 04/07/2005, 18:13   #3 (permalink)
atg
ggg
 
Üyelik Tarihi: 03/2004
Mesaj: 289
Varsayılan

öncelikle cevabın için teşekkürler, 1 ve 2. problemlerin cevabını bulduğumu zaten söylemiştim, 3. sorunun cevabı sence B tablosundan bir hediyeNo silince Ara tablodaki kayıtları silmez mi? yani aslında ben bunun tam tersini yapmak istemiştim
atg hatta değil   Alıntı Yaparak Yanıtla
Eski 04/07/2005, 19:47   #4 (permalink)
cevizin en küçük avatarı
 
pirilti Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2004
Mesaj: 1,540
Ampul

sende tam tersini yap busefer ana tabloya FOREIGN KEY koy ve ara tabloya bağla...
3 soruyu tersden anlamışım...
__________________
Sarp Pirilti Yap Olsun...olmuyorsa başka bir yol/şey dene ve devam et
pirilti hatta değil   Alıntı Yaparak Yanıtla
Eski 04/07/2005, 21:01   #5 (permalink)
atg
ggg
 
Üyelik Tarihi: 03/2004
Mesaj: 289
Varsayılan

peki ne tarz bir foreign key peki? ama bu "many-to-one" durumu "foreign-key" "unique index" ister ama ,yoksa bende düşünmüştüm, evet arkadaşlar işe yaramaz deyip bir kenara atmayın belki benim aradığım çözümdür, söyleyin onları bana, yine en çok bilen durumuna sokmayın beni( uyuz oluyorum bu duruma ) , hadi pamuk eller klavyeye
atg hatta değil   Alıntı Yaparak Yanıtla
Eski 04/07/2005, 21:58   #6 (permalink)
Registered User
 
Üyelik Tarihi: 01/2003
Mesaj: 6,337
Varsayılan

Alıntı:
3- B tablosundaki bir HediyeNo ARA_GEÇİŞ tablosundaki hiçbir satır tarafından gösterilmediğinde B tablosundaki bu HediyeNo silinsin istiyorum.
Bu işi veritabaninda değil, uygulama katmanında çözmelisin. ARA_GECIS tablosundan kayıt silindiği zamanlarda veya günün/haftanın belli zamanlarında çalışan bir kodla, karşılığı olmayan kayıtları sildirmelisin.

Tavsiye etmeyeceğim bir yöntem ise ARA_GECIS tablosundan her kayıt silindiğinde çalışacak bir trigger yazman. Her veritabanı trigger'i desteklemez.
acemi hatta değil   Alıntı Yaparak Yanıtla
Eski 04/07/2005, 22:57   #7 (permalink)
atg
ggg
 
Üyelik Tarihi: 03/2004
Mesaj: 289
Mutsuz

Alıntı:
acemi, mesajından alıntı:
Bu işi veritabaninda değil, uygulama katmanında çözmelisin.
İşte benim yaptım ama bende beğenmediğim dediğim yöntem buydu. Cevabın için teşekkürler...
atg hatta değil   Alıntı Yaparak Yanıtla
Eski 05/07/2005, 10:52   #8 (permalink)
cevizin en küçük avatarı
 
pirilti Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2004
Mesaj: 1,540
Varsayılan

niye uygulama katmanında çözmeli...acaba tecrübeyle sabit bir durum mu var lütfen yazarsanız çok sevinirim
__________________
Sarp Pirilti Yap Olsun...olmuyorsa başka bir yol/şey dene ve devam et
pirilti hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
Web dizayn ve yazılım tavsiyeleriniz ? alpac Web Tasarım 2 29/11/2006 18:27
1 belediye 7 dizayn ve yorumlar sadroalin Site Yorum 13 25/09/2006 21:40
Site Dizayn PaNTHeRa_ Site Yorum 27 22/05/2006 17:17
creative-dizayn circassia Site Yorum 16 08/02/2006 19:39
dizayn 1 DesigneR Photoshop / Corel / PSP 51 30/08/2003 10:54


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 13:39.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net