Veritabanı Tasarımı Nasıl Olmalıdır
-
Arkadaşlar, bir bir haber sistemi için üyelik sistemi yapacağım da, aklıma şu takıldı
Üyeler tablosu tek mi olsun (yazar, yönetici, editor, normal üye), yoksa tabloları ayrıştırayım mı?
Yada sizlerin fikirleri varsa onu da öğrenebilir miyim? Olması gerkenler yada fikir öneriliriniz için şimdiden teşekkürler.
-
ayırdıgında her tabloya tek tek bakıcakmısın her loginde ? yada user a rolünü sorup ona göremi bakıcaksın ? ayrıca neden ayırasın ki hiç ayıranı görmedim
-
iki tablo yap, birisinde rolleri tut, diğerinde üyeleri tut, üyeler tablosunda roleID diye bir kolonun olsun, onu da role tablosundan verirsin. Ayrı yapmana gerek yok. Ayrıca üyeler tablonda IsActive diye bir field in olsun, birini banladığında silmek yerine isActive i 0/false yaparsın, böylece login olurken kullanıcı adı şifre doğru olsa bile isActive 0 olduğundan login yapamacak, banlanıldığı anlaşılacak... gibi gibi...
-
unbalanced bunu yazdı
iki tablo yap, birisinde rolleri tut, diğerinde üyeleri tut, üyeler tablosunda roleID diye bir kolonun olsun, onu da role tablosundan verirsin. Ayrı yapmana gerek yok. Ayrıca üyeler tablonda IsActive diye bir field in olsun, birini banladığında silmek yerine isActive i 0/false yaparsın, böylece login olurken kullanıcı adı şifre doğru olsa bile isActive 0 olduğundan login yapamacak, banlanıldığı anlaşılacak... gibi gibi...
Aynen boyle. Roller tablonda da hatta yeni makale yazabilir silebilir degistirebilir seklinde boolean kolonlar tut. Sonra uyelerle eslestirirsin bunlari.
-
Yani kısaca şöyle
Kullanıcılar Tablosu
kullanici_id, rol_ID, kullanci_adi, aktif, şifre, vss...1, , 1 , denem1, , 0, , bla
2, , 1 , denem2, , 0, , bla
3, , 2 , denem3, , 1, , bla
Roller Tablosu
rol_id, rol_adi1, ,editor
2, , admin
3, ,kullanici
Peki, rollere ait izinler tablosu ile ilgili detaylı bilgi verebilir misiniz? (Şu sayfaya girebilir, yorum yazabilir, üye silebilir vs..)
-
Direk drupal kursan daha kolay olmazmi?
-
Hocam, kendim yazıyorum. O yüzden fikre ihtiyacım var
-
ontedi bunu yazdı
Hocam, kendim yazıyorum. O yüzden fikre ihtiyacım var
her sayfanin basinda calistirdigin bi fonksiyonun olsun : requireRole(5) gibi gibi. o 5 roller tablosundaki rol idsi olsun.
'bu sayfayi gormek icin en az editor olmak gerekir' gibi bi kontrol yapsin bu fonksiyon. userin yetkisi yetmiyosa 'yetkisiz erisim' sayfasina atsin.
rollerin hiyerarsik gitmiyosa birden fazla rol pasla buna (adminler ayni anda editor olamasin istiyosan)
atiyorum : requireRole(3,5,7);
gibi
-
Arkadaşlar roller ve izinleri kosunda bir tasarım örneği ve de içinde örnekle beraber anlatabilirseniz kafamda daha güzel şekillenmiş olacak her şey.
Muamma olan yerler var halen.
-
şu sayfaya girebilir, şuralarda gezebilir olaylarının daha gelişmiş için ekroller diye bir hücre aç roller tablosuna yazılım tarafından arraya atıp sırayla alacağın bir ekroller fonksiyonu hazırla ekroller hücresinde de 1,0,1,1,1,0 gibi tut izinleri ilerde adamlar özel yönetim seviyesi açtırma, dinamik olarak panelden editörün adminin nerelere girip giremeyeceğini ayarlama olayı yaptırmak isterse kullanırsın kolayca. 1 girebilir, 0 giremez olarak düşün ekroller(kullanıcıRolID,sayfaID) şeklinde denetleme yaparsın.
Eğer sayfa çoksa veya her sayfa için girebilir ama değiştiremez, girebilir değiştirebilir ama silemez gibi ütopik ayar gayar düşünüyorsan benim yöntemim şöyle; her sayfanın bir sayfaIDsi var, her işlemin de bir kodu var örneğin silme x görme w güncelleme e gibi. Bunları arraya atıp arrayımı işlem esnasında kontrol ettirip o sayfa ve işlem arrayımda var mı yok mu kontrol ettirip varsa geç yoksa yetkin yok sayfasına göndertiyorum.
Örnek tablo: http://i.hizliresim.com/YBlJAa.png
pesimistzombie tarafından 01/May/15 13:34 tarihinde düzenlenmiştir -
ontedi bunu yazdı
Yani kısaca şöyle
Kullanıcılar Tablosu
kullanici_id, rol_ID, kullanci_adi, aktif, şifre, vss...1, , 1 , denem1, , 0, , bla
2, , 1 , denem2, , 0, , bla
3, , 2 , denem3, , 1, , bla
Roller Tablosu
rol_id, rol_adi1, ,editor
2, , admin
3, ,kullanici
Peki, rollere ait izinler tablosu ile ilgili detaylı bilgi verebilir misiniz? (Şu sayfaya girebilir, yorum yazabilir, üye silebilir vs..)
aynen yapı bu şekilde hocam, izin olayını nurulmac11 söylemiş zaten ama biraz daha efektif olması lazım. Yani bir sistem yazarken genişletilebilir olmalı. Mesela 3 kullanıcı tipin var diyelim, sonra 4. eklendi ve ona da erişim yetkisi vermek istiyorsun, bu sefer ne olacak? her fonksiyona eklemen gerekiyor (requirerole olayı)
bunun yerine gruplar oluşturaibilirsin ve her fonksiyona bir grup atabilirsin. Mesela A fonksiyonuna X grubundakiler erişim hakkına sahip olsun, B fonksiyonuna Y grubundakiler erişebilsin, C fonksiyonuna da Z grubundakiler erişsin.
Sonra diyelim ki yeni bir rol daha oluşturdun, bunun A ve C fonksiyonuna erişmesini istiyorsun, o halde X ve Z grubuna eklemen yeterli :) bu eklemeyi de db de bir tabloda tutabilirsin.
örnek olarak burayı incele, en sonlarda o şekil bir mantığın örneği var.
