PDA

View Full Version : نوع داده ای برای ایجاد انواع کاربران



zareei_ta
دوشنبه 02 آبان 1390, 10:15 صبح
من در سایتم برای کاربر میخوام سطح دسترسی ایجاد کنم یعنی یه قسمت هایی رو که مدیر ساخت تعیین میکنه نتونه ببینه در دیتابیس در جدول کاربران برای اینکار چه نوع داده را باید قرار بدیم؟

Felony
دوشنبه 02 آبان 1390, 19:41 عصر
یک جدول با نام Role با فیلدهای زیر میسازی :

ID , Title

یک جدول با نام Permissions با فیلد های :

ID , Title

یک جدول هم با نام Roles_Permissions با فیلدهای :

ID , Role_ID , Permissions_ID

که فیلد Role_ID با فیلد ID از جدول Role و فیلد Permissions_ID با فیلد ID از جدول Permissions ارتباط داره .

در جدول کاربران هم یک فیلد با نام Role_ID اضافه میکنی ؛ حالا جدول ها رو با داده های فرضی زیر پر میکنیم :

جدول Role :

id title
1 admin
2 user
3 superuser
4 guest

جدول Permissions :

id title
1 read
2 insert
3 delete
4 update
5 report

جدول Roles_Permissions :

id roles_id permissions_id
1 1 1
2 1 2
3 1 3
4 1 4
6 1 5
7 2 3
8 3 4
10 2 1

حالا فرض کن مقدار فیلد Role_ID کاربر شماره 2 برابر 1 هست و میخوایم ببینیم چه دسترسی هایی داره ، میتونیم همچین Query بنویسیم :

SELECT
[roles-permissions].permissions_id,
[permissions].title
FROM [roles-permissions]
INNER JOIN [permissions] ON [roles-permissions].permissions_id = [permissions].id
WHERE roles_id = (SELECT users.roles_id FROM users WHERE users.id = 2)