محسن
4 سال پیش توسط محسن مطرح شد
7 پاسخ

راهنمایی جهت طراحی دیتابیس

با سلام.بنده جهت طراحی سامانه مدیریت امور اداری سوال دارم.بنده تو دیتابیس جداول زیر رو دارم.
جدول companies برای نام شرکت هایی که تو سیستم ثبت نام کردن.

table companies:
id
name

جدول subsets برای ایجاد زیرمجموعه های مختلف هست...مثلا ساختمان مرکزی-شعبه و ...
هر شرکت حداقل یه زیرمجموعه داره و ادمین میتوه زیرمجموعه جدیدی رو اضافه کنه به شرکتش

table subsets:
id
name
company_id

جدول users که مربوط به مشخصات کاربرها است.هر کاربر متعلق به یه زیرمجموعه(subset) است

table users:
id
name
subset_id

تو این سامانه هر کاربر دسترسی مختلفی رو داره و جدول permissions هم به این صورت تعریف شده:

table permissions:
id
name

موردی که قراره تو سامانه داشته باشم مربوط به دسترسی کاربر هست.
هر کاربر متعلق به یه زیرمجموعه( subset )هست اما میتونه دسترسی های خاصی به زیرمجموعه های دیگه داشته باشه.
برای توضیح بیشتر یک مثال میزنم:
مثلا یه شرکت 3 مجموعه داره:

subsets:
id:1
name:'مجموعه 1'
company_id:3
,
id:2
name:'مجموعه 2'
company_id:3
,
id:31
name:'مجموعه 3'
company_id:3

جدول permissions هم به صورت زیر باشه:

permissions :
id:1
name:'دسترسی1'
,
id:2
name:'دسترسی2'
,
id:31
name:'دسترسی3'

و کاربر هم به این صورت:

users:
id:1
name:'کاربر1'
subset_id:3
,
id:2
name:'کاربر2'
subset_id:3
,
id:3
name:'کاربر3'
subset_id:3

بنده با توجه به این سیستم یه جدول میانی ایجاد کردم که شامل 3 ستون هست.و دسترسی کاربر رو به زیر مجموعه های مختلف نشون بده:

table permission_user:
user_id
permission_id
subset_id

به نظر شما آیا این روش صحیح است یا من باید دیتابیس رو تغییر بدم؟
از طرفی من نمونه ای از جدول میانی با 3 ستون ندیدم.کسی هست که همیچن موردی رو دیده باشه و لینکش رو به بنده بده؟


ثبت پرسش جدید
mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 4 سال پیش مطرح شد
0

دلیل اینکه کسی تا الان جواب نداده این هست که سوال شما خیلی طولانی شده توضیحاتش. میشد کل توضیحاتی که در مورد جدول ها دادین رو توی یه عکس بدین. سه تا جدول بکشید کنار هم بزارید توی یه عکس ساده.

الان من خودم از بالا تا پایین رو خوندم نصفش یادم رفت! البته شاید بقیه افراد اینجوری نباشن.


محسن
@mohsenmoradi1851 4 سال پیش مطرح شد
0

@khanzadimahdi
به صورت خلاصه میشه گفت جدول میانی که در نظر گرفتم ۳ ستون داره..یعنی ۳ مدل درگیر هستن..میخوام ببینم کسی همچین موردی رو داشته قبلا؟درست هست همچین کاری؟


الیاس سخاوتی نیا
تخصص : علاقه‌مند به برنامه‌‎نویسی
@elyassir 4 سال پیش مطرح شد
0

رابطه اگه یک به چند باشه یک جدول کافیه
ولی اگه چند به چند باشه باید یه جدول میانی داشته باشین یعنی
یک رابطه چند به چند = دو تا رابطه یک به چند + یک جدول میانی برای ارتباط بینشون


محسن
@mohsenmoradi1851 4 سال پیش مطرح شد
0

@elyasbeshkani میشه بیشتر توضیح بدید؟


الیاس سخاوتی نیا
تخصص : علاقه‌مند به برنامه‌‎نویسی
@elyassir 4 سال پیش مطرح شد
0

رابطه یک به چند (on to many) یعنی
مثلا جدول مقاله و کاربر رو در نظر بگیرین
یعنی هر کاربر چند مقاله داره ولی هر مقاله مربوط به یک کاربر میشه

رابطه چند به چند (many to many) یعنی
مثلا جدول مقاله و دسته بندی
یعنی هر دسته بندی چند مقاله داره و هر مقاله هم متعلق به چند دسته بندی میشه

توی جدول زیر

table permission_user:
user_id
permission_id
subset_id

به نظر من subset_id اضافیه چون شما user_id رو دارین و میتونین از جدول users مقدار subset_id رو بخونین

نظر من اینجوریه البته :)

بیشتر بخونید


محسن
@mohsenmoradi1851 4 سال پیش مطرح شد
0

@elyasbeshkani نه دیگه...درسته هرکاربر متعلق به یه subset هست ولی میتونه در صورت لزوم دسترسی خاصی به subset دیگه ای هم داشته باشه...مشکل همینه


الیاس سخاوتی نیا
تخصص : علاقه‌مند به برنامه‌‎نویسی
@elyassir 4 سال پیش مطرح شد
0

@mohsenmoradi1851
آها پس نسبتا درست دیده میشه اگه افزونگی داده زیادی نداره که همینجوری هم خوبه بازم دوستان حرفه ای مثل @ali.bayat نظر بدن بهتره


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام