راکت

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

19 پاسخ

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

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

ثبت پرسش جدید

پاسخ‌ها

19
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

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

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

شاید پاسخ شما همین‌جا باشد

محمد
محمد
@Mohammad79

تخصص: همیشه در حال یادگیری ...

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

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

تخصص: همیشه در حال یادگیری ...

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

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

محمد
محمد
@Mohammad79

تخصص: همیشه در حال یادگیری ...

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

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

محمد
محمد
@Mohammad79

تخصص: همیشه در حال یادگیری ...

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

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

محمد
محمد
@Mohammad79

تخصص: همیشه در حال یادگیری ...

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

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

محمد
محمد
@Mohammad79

تخصص: همیشه در حال یادگیری ...

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

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

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

محمد
محمد
@Mohammad79

تخصص: همیشه در حال یادگیری ...

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

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

محمد
محمد
@Mohammad79

تخصص: همیشه در حال یادگیری ...

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

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

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

محمد
محمد
@Mohammad79

تخصص: همیشه در حال یادگیری ...

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

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

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

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