ابراهيم بازي نشر 28 يونيو 2023 أرسل تقرير نشر 28 يونيو 2023 (معدل) لماذا لم نضف خاصية unique في $table->string('username') و اضفناها عند عملية التحقق ؟ تم التعديل في 28 يونيو 2023 بواسطة Mustafa Suleiman تعديل عنوان السؤال 1 اقتباس
1 Kais Hasan نشر 28 يونيو 2023 أرسل تقرير نشر 28 يونيو 2023 يبدو أن السؤال خاص بأحد الدروس من أحد الدورات، من فضلك قم بطرح الأسئلة الخاصة بدرس ما أسفل ذلك الدرس. و لكن كجواب على سؤالك بشكل عام فإن عملية التحقق يمكن وضعها في 3 أماكن و ذلك حسب أهمية هذا التحقق و هذه الأماكن بالترتيب من الأضعف إلى الأقوى: لدى المستخدم، هذا يتم مثلاً عندما تقوم بإدخال بريد الكتروني ليس له النمط العام لأي بريد الكتروني، أو عندما تحاول إدخال نص في مربع إدخال يقبل أعداد فقط. هذا النوع من التحقق جيد لتخفيف العبء على السيرفر من ناحية الطلبات الخاطئة و يساعد المستخدم على معرفة ما الذي عليه إدخاله بشكل أسرع و بالتالي يعطي تجربة جيدة للمستخدم. لكن هذا النوع يمكن تجاوزه بسهولة عن طريق إرسال طلب بشكل مباشر بدلاً من استعمال المتصفح و الكثير من الطرق الأخرى و بالتالي من غير الجيد استعماله للأمور الحساسة. في السيرفر، هذا يتم بعد إرسال المستخدم لبياناته يقوم السيرفر بالتحقق من هذه البيانات و من أنها تراعي الشروط المطلوبة. هذا أكثر أماناً من الطريقة السابقة و دائماً يمكن استعماله للأمور الحساسة و لكن الخطأ البرمجي هنا قد يسبب مشاكل غير ملحوظة. في قاعدة البيانات، هذا النوع مهم جداً لضمان أنه حتى في حال حدوث خطأ برمجي لن يتم إدخال بيانات غير مناسبة إلى قاعدة البيانات و هو مهم جداً كما في المثال الذي ذكرته. طبعاً يمكن استعمال الطرق الثلاث السابقة معاً، و لكن هذا يعتمد على حساسية التطبيق الذي تقوم ببناءه و متطلباته، بالتالي في حالتك من الجيد إضافة الشرط إلى قاعدة البيانات و لكن قد يكون ليس هذا هو الغرض من الدرس و لذلك لم يتم إضافته، و لكن عندما تقوم ببناء تطبيق حقيقي فمن الأفضل أن تضيف الأنواع الثلاث من التحققات. 1 اقتباس
0 Mustafa Suleiman نشر 28 يونيو 2023 أرسل تقرير نشر 28 يونيو 2023 أرجو منك التعليق أسفل فيديو الدورة المتعلق بالسؤال لمساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا في قسم أسئلة البرمجة. وبخصوص سؤالك، فهو يتعلق بإطار لارافيل، ونستخدم ذلك الكود في عملية إنشاء جدول في قاعدة البيانات باستخدام ميزات مولد الكود الخاص بلارافيل (Laravel's code generator)، لتعريف حقل 'username' كحقل نصي (string) في جدول قاعدة البيانات. وبدون معرفة المشروع أو المطلوب، فعامًة السبب هو: 1- مرونة في استخدام الحقل، فعندما تقوم بتعريف الحقل 'username' دون تحديد الخاصية unique، تستطيع استخدامه بأكثر من سجل في الجدول. قد يكون هذا مفيدًا في بعض الحالات، مثل السماح للمستخدمين بتكرار أسماء المستخدمين في حالات محددة. 2- التحقق من الحقل المميز عند الحاجة بدلاً من إجبار الحقل على أن يكون فريدًا في تعريف الجدول، وبإمكانك التحقق من فرادة القيمة المدخلة عند عملية الإدخال أو التحديث، واستخدام القيود أو التحقق من الفرادة في طبقة التطبيق أو قاعدة البيانات نفسها. 3- الحاجة إلى مزيد من الخصائصالأخرى للحقل 'username' بجانب فرادته، مثل الحد الأقصى لعدد الأحرف المسموح بها أو قواعد التحقق الأخرى، وربما من الأفضل تحديد تلك الخصائص في مكان منفصل لتحقيق أقصى قدر من المرونة وإعادة الاستخدام. أي يعتمد استخدام خاصية unique على احتياجات المشروع وتصميم قاعدة البيانات، فقد تحتاج في بعض الحالات إلى تحديد الحقل كفريد في تعريف الجدول، في حين أن في حالات أخرى يمكن التحقق من فرادة القيمة في وقت لاحق أو استخدام خصائص إضافية. اقتباس
0 بلال زيادة نشر 29 يونيو 2023 أرسل تقرير نشر 29 يونيو 2023 إذا فهمتك بشكل صحيح، تتحدث عن إضافة خاصية "unique" في حقل الاسم المستخدم (username) في قاعدة البيانات. وتتساءل عن السبب وراء عدم إضافتها عند تعريف الحقل وإضافتها فقط عند عملية التحقق. الخاصية "unique" تستخدم للتأكد من أن قيمة الحقل يجب أن تكون فريدة في جدول قاعدة البيانات. يعني ذلك أنه لا يمكن أن يكون هناك أكثر من سجل واحد في الجدول يحمل نفس القيمة في هذا الحقل. عندما يتم تطبيق الخاصية "unique" على الحقل في تعريف الجدول، يتم التحقق من القيمة المدخلة في الحقل تلقائيًا ويتم رفضها إذا تم العثور على سجل آخر بنفس القيمة. في حالة إضافة خاصية "unique" عند عملية التحقق، يتم التحقق من القيمة المدخلة يدويًا قبل إجراء عملية الحفظ في قاعدة البيانات. يتم استعلام قاعدة البيانات للتحقق مما إذا كان هناك سجل آخر بنفس القيمة في الحقل. إذا تم العثور على سجل متطابق، يتم رفض القيمة ويتم إرجاع رسالة خطأ تشير إلى أن القيمة غير فريدة. السبب وراء إضافة خاصية "unique" عند عملية التحقق هو ضمان فرادة القيمة المدخلة في الحقل قبل عملية الحفظ. قد يكون هناك أسباب أخرى لتجنب إضافة خاصية "unique" في تعريف الجدول، مثل استخدام تكنولوجيا قاعدة البيانات التي لا تدعم هذه الخاصية أو الرغبة في تخصيص رسالة الخطأ بشكل أكثر تحكمًا. ومع ذلك، يمكن استخدام الخاصية "unique" في تعريف الجدول للتأكد من الفرادة على مستوى قاعدة البيانات وتوفير إجراءات أمان إضافية. اقتباس
السؤال
ابراهيم بازي
لماذا لم نضف خاصية unique في $table->string('username') و اضفناها عند عملية التحقق ؟
تم التعديل في بواسطة Mustafa Suleimanتعديل عنوان السؤال
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.