Şöyleki, tablolar arasında many to many ilişki var demektir.
bir üyenin silah kullanması olası tamamı ile iş mantığıdır ama bu iş mantığınıda database'de tutmak istersen onun içinde basit bir flag tutarsın lakin tablolar arasındaki ilişki ile alakası olmayan bir konu.
senin tablolar arasında bir tablo daha tanımlaman gerekir.
aşağıda many to many ilişki örneği mevcut.
uye(tablo)
id(primary key)
name
uye_silah(ara tablo)
id
uye_id (foreign key -> uye tablosu)
silah_id(foreign key -> silah tablosu)
last_used
silah(tablo)
id(primary key)
name
sorgu atarkende ;
select * from uye_silah where uye_id = {uyeId} -> üye ye ait silahları getirir.
select * from uye_silah where uye_id = {uyeId} and last_used = 1 -> üyenin kullandığı silahı gösterir.
select * from uye_silah where silah_id = {silah_id} -> silah'ı almış tüm kullanııcıları listeler
select * from uye_silah where silah_id = {silah_id} and last_used = 1 -> silahı kullanan tüm kullanııcıları listeler
---
Bir silahı kullanabilir olayı için,
çözüm 1 : istersen uye_silah tablosunda int bir alan yarat last_used default değeri 0 olsun.
0 -> kullanılmıyor
1 -> kullanıyor.
kullanım için olan mantığını bu şekilde tutabilirsin.
çözüm 2 : uye tablosundada last_used_silah_id olarakta tutabilirsin o noktada da bu iş mantığını yürütebilirsin..