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

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

سلام دوستان خسته نباشید
یک بخش داریم به اسم درخواست ها که 3 تا نوع درخواست داریم.
هر نوع درخواست حدودا 35 تا فیلد داره، و اینم اضافه کنم که حدود 70 درصد فیلد این درخواست ها مشترک هستند. بنظرتون دیتابیس به چه صورت طراحی بشه بهینه و خوبه؟
این درخواست ها در مورد ارسال وسایل هستش و هر کدوم از درخواست ها یه فرستنده تا و یه گیرنده
من توی ذهنم این هستش که یه جدول برای درخواست بزنم که چند تا فیلد مثل تاریخ و نوع درخواست و... هستش. برای فیلد های مشترک گیرنده یه جدول و همچنین برای فرستنده.
حالا اون فیبد های اختصاصی که هستند برای هر درخواست یه جدول دیگه.

ممنون میشم راهنمایی کنید.


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

یک سوال تقریبا مشابه در تاپیک دیگه‌ای مطرح شد
شاید جواب دقیق این سوال نباشه اما چکش کنید

https://roocket.ir/discuss/15099#subject-53222


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش مطرح شد
0

سلام وقت بخیر
اگر بتونید روابط مد نظرتون رو داخل یه flowchart رسم کنید و بفرستید دوستان بهتر می تونن کمکتون کنن.
@Mohammad79


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 4 سال پیش مطرح شد
moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش مطرح شد
0

به نظر من برای ثبت درخواست یک جدول ایجاد کنید. که توی این جدول موارد زیر وجود داشته باشه (می تونید فیلدهای بیشتری رو اضافه کنید )

requests
----------
id
from_id
to_id
code
date
...
froms
---------
id
firstname
lastname
Address
....
toes
--------
id
firstaname
lastname
address
....
--------
users

می تونید یه رابطه بین اینها بر قرار کنید به صورت many to many با کاربران و from و to
@Mohammad79


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 4 سال پیش مطرح شد
0

@mohaligateway
بسیار خوب، پس یه جداول 1) جدول درخواست 2)جدول فرستنده 3)گیرنده 4)مدارک و از طریق آیدی ها به هم لینک کنم.
یه سوال دیگه برای اینا کوئری به چه صورتی بنویسم؟ تمام اطلاعات گیرنده و فرستنده روی یه آرایه ذحیره کنم بعد موارد مورد نیاز برای هر کدومش کوئری بزنم؟


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش آپدیت شد
0

یه موردی الان به ذهنم رسید اینه که کاربر ها که نقش فرستنده و گیرنده دارن ثبت نام باید بکنن ؟
چه فیلدهایی برای ثبت نام وجود داره آیا فیلد های غیر مشترک هم توی ناحیه کاربری ذخیره میشن ؟
@Mohammad79


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 4 سال پیش مطرح شد
0

@mohaligateway
کاربر فقط یک بار ثبت نام میکنه. فرم درخواست ها برای ثبت نام نیستش. یه کاربر بخواد یه درخواستی ثبت کنه حتما باید فرستنده و گیرنده پر کنه.
اطلاعات ثبتنام هم نام، ایمیل، رمز هستش


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش مطرح شد
0

شما باید یک رابطه one to manay بین جدول users و requests ایجاد کنید.
و یک رابطه one to one بین جدول requests و froms ایجاد کنید.
و یک رابطه one to one بین جدول requests و toes داریم.
برای کوئری ها اگه خروجی مد نظرتون رو بگید بهتر میشه کمک کرد.
@Mohammad79


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 4 سال پیش مطرح شد
0

@mohaligateway
این رابطه ها همون ایدی ریکورد های دیگه توی جداول دیگه هستند؟


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش مطرح شد
0

می تویند از این لینک استفاده کنید.
https://laravel.com/docs/8.x/eloquent-relationships
@Mohammad79


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 4 سال پیش آپدیت شد
0

@Mohammad۷۹
من از لاراول استفاده نمیکنم. فریم ورکم Codeigniter هستش


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش آپدیت شد
0

ببخشید تا حالا از Codeigniter استفاده نکردم. شاید دوستان بتونن کمکتون کنن.
@hesammousavi
@ali.bayat


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 4 سال پیش مطرح شد
0

@mohaligateway
برای دیتابیس الان میخوام این کارو بکنم بنظرتون درسته؟
جدول درخواست: اطلاعات کلی مثل شماره، تاریخ، نوع، چه کسی درست کرده و ...
جدول: جزئیات: اطلاعات گیرنده و فرستنده بعضی هاشون مثلا توی یه نوع درخواست نیاز نیست ولی میخوام توی دیتابیس نال باشه ولی توی ثبت کنترل کنیم که چه چیز بره و ...
جدول فایل: اگه کسی فایلی آپلود کرده بره اونجا.

الان کسی بخواد درخواست ثبت کنه بعد از پر کردن یه اطلاعات میره توی جدول اصلی میشنه بعد میره توی جدول جزئیات یدون رکورد برای فرستنده ثبت میشه و یکی دیگه برای گیرنده.

بنظرتون این کاری که الان کردم درست هستش؟ بنظرم زیاد نرمال شد😎


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 4 سال پیش مطرح شد
0

@mohaligateway
یا اصلا برای سه تا نوع درخواست، واسه هر کدومش یدونه جدول بسازم.که تعداد فیلد ها تقریبا 30 تا خواهد شد.
بنظرم این ساده و بهتر هستش؟


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش مطرح شد
0

چند تا نکته:
1- برای from و to حتما یه یونیک بزارید برای اینکه آدرس ها یکی باشی تعداد سطر ها بالا نره.
2- جدول فایل رو میشه حذف کرد. اگه کاربر فایل میفرسته لینکش رو برای اون ذخیره کنید. اگه توی درخواست ها هستش مسیر رو توی درخواست ها بزارید.
3- برای جدول جزئیات درخواست می تونید از metas استفاده کنید که اگر جزئیات داشت در اون قسمت قرار بگیره و گرنه بی خودی حجم جدول را بالا نبره ( البته می تونید توی requests هم بزنید)
4- برای جدول درخواست اصلی هم یه from_id و to_id قرار بدید بعد جدول ها رو به هم ارتباط بدید.
5- اگر اطلاعات قرار هست ارسال بشه برای کاربر پس باید کاربر از قبل لاگین کرده باشه و یه id داشته باشه ؟ مثل اسنپ کاربر لاگین کرده و یه لوکیشن ثبت می کنه برای درخواست هاش.
6- یه ثبت درخواست چندین تا آدرس می تونه داشته باشه ؟
@Mohammad79


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 4 سال پیش مطرح شد
0

1- اوکی پس برای هر کدومش یه جدول میزنم و یونیک هارو به جدول اصلی اضافه میکنم.
2- جدول فایل جای دیگه هم استفاده میکنم.
3- metas ؟؟
4- پس برای گیرنده و فرستده واسه هر کدومش یه جدول بزنم.
5- لازمه ی ثبت درخواست لاگین هستش.
6- هر درخواست یه گیرنده داره و یه فرستنده.

@mohaligateway راستی ممنون از لطف شما که وقت میزارید و منو راهنمایی میکنید🙏❤️


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش مطرح شد
0

1- درسته
2- درسته
3- به جدول های رابط متا می گن موارد غیر ضروری می تونید توی این جدول قرار بدید و به جدول اصلی وصل کنید.
4- درسته
5- درسته
6- درسته
@Mohammad79


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 4 سال پیش مطرح شد
0

بسیار عالی
فقط کوئری چه طوری بزنم؟
@mohaligateway


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش مطرح شد
0

ببینید این دو تا لینک کارتون رو راه می اندازه
https://forum.codeigniter.com/thread-65777.html
https://forum.codeigniter.com/thread-74126.html
من خودتم تا حالا با codeigniter کار نکردم.
@Mohammad79


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

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