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

1 هفته پیش
توسط الیاس بشکنی آپدیت شد
محسن ( 6540 تجربه )
1 هفته پیش

با سلام.بنده جهت طراحی سامانه مدیریت امور اداری سوال دارم.بنده تو دیتابیس جداول زیر رو دارم.
جدول 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 ( 67777 تجربه )
1 هفته پیش
تخصص : برنامه نویس سمت سرور

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

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

محسن ( 6540 تجربه )
1 هفته پیش

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

الیاس بشکنی ( 69675 تجربه )
1 هفته پیش
تخصص : در حال یادگیری

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

محسن ( 6540 تجربه )
1 هفته پیش

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

الیاس بشکنی ( 69675 تجربه )
1 هفته پیش
تخصص : در حال یادگیری

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

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

توی جدول زیر

table permission_user:
user_id
permission_id
subset_id

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

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

بیشتر بخونید

محسن ( 6540 تجربه )
1 هفته پیش

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

الیاس بشکنی ( 69675 تجربه )
1 هفته پیش
تخصص : در حال یادگیری

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

برای ارسال پاسخ باید وارد سایت شوید