اذهب إلى المحتوى

كل الأنشطة

تحدث تلقائيًا

  1. الساعة الماضية
  2. لا يتم المقارنة بينهما حيث يعتبر الدومين والاستضافة ونشر الموقع على الانترنت هي عناصر مهمة في إنشاء ونشر موقع على الويب. ولكل منها دور مختلف في عملية إنشاء الموقع.وسأحاول التوضيح بشكل بسيط أولاً الدومين هو الاسم الفريد الذي يحدد عنوان موقع الويب على الانترنت. على سبيل المثال، google.com هو دومين لمحرك البحث جوجل. يتم شراء الدومين من مزود خدمة الدومينات ويتم تجديده سنويًا. و يستخدم الدومين لتوجيه المستخدمين إلى موقع الويب الخاص بك. أما بالنسبة للاستضافة هي المكان الذي يتم فيه تخزين ملفات موقع الويب الخاص بك، مثل الصور والمحتوى والقوالب. و يتم ربط الاستضافة بالدومين لكي يتمكن الزوار من الوصول إلى موقع الويب الخاص بك. وأخيراً بعد شراء الدومين والاستضافة، يمكنك بدء نشر موقعك على الانترنت. يتضمن ذلك تحميل ملفات موقعك إلى الاستضافة وتكوينها بحيث يمكن للزوار الوصول إليها. الشرح السابق بشكل مختصر وبسيط ولكن يفضل الإطلاع على المصادر في التعليق السابق للمزيد من التفاصيل والشرح
  3. اليوم
  4. ال Synthetic data أو البيانات الاصطناعية هي بيانات غير بشرية تحاكي بيانات العالم الحقيقي. و تتم إنشاؤها باستخدام خوارزميات الحوسبة والمحاكاة التي تعتمد على تقنيات الذكاء الاصطناعي المولد كما وضح مصطفى في التعليق السابق . علاقة البيانات الاصطناعية بالذكاء الاصطناعي تكمن في استخدام تقنيات الذكاء الاصطناعي لإنشاء هذه البيانات. يتم تدريب خوارزميات الذكاء الاصطناعي على البيانات الحقيقية لتعلم الأنماط والترابطات لهذه البيانات. بعد التدريب، يمكن للمولد إنشاء بيانات اصطناعية تكون مماثلة إحصائيًا للبيانات الأصلية. ولكن فائدة هذه البيانات أنها يمكن استخدامها لإنتاج مزيد من البيانات بتكلفة منخفضة، مما يساعد في زيادة حجم البيانات المتاحة للتحليل وتدريب نماذج الذكاء الاصطناعي. كما أنه يمكن استخدام البيانات الاصطناعية لحماية خصوصية المستخدمين والمعلومات الشخصية.
  5. تُعرف باسم البيانات الاصطناعية أي بيانات تم إنشاؤها بدلاً من جمعها من العالم الحقيقي. ويتم توليد البيانات من خلال عمليات حسابية أو خوارزميات معينة تم تصميمها لمحاكاة الخصائص والإحصائيات الأساسية للبيانات الحقيقية، و تتراوح البيانات ما بين النصوص والصور إلى بيانات المعاملات المالية والبيانات الصحية. ففي مجال الذكاء الاصطناعي، وخاصة في التعلم الآلي والتعلم العميق، يُعتبر وجود كميات كبيرة من البيانات عالية الجودة أمرًا ضروريًا لتدريب النماذج، لكن من الصعب أو المكلف الحصول على بيانات حقيقية كافية، وهنا تأتي البيانات الاصطناعية كحل. أيضًا بعض البيانات الحقيقية تكون حساسة وتتطلب حماية خاصة (مثل البيانات الصحية أو المالية)، لذا تستخدم البيانات الاصطناعية لتجنب المخاطر المتعلقة بالخصوصية والأمان لأنها لا تتعلق بأفراد حقيقيين. بجانب أنها تساعد في تنويع مجموعات البيانات، مما يؤدي إلى نماذج أكثر قوة وتعميمية، مثل توليد بيانات تتضمن سيناريوهات نادرة أو حالات خاصة التي قد تكون تحت تمثيلها في البيانات الحقيقية. بالإضافة إلى إختبار النماذج في بيئات أو سيناريوهات محددة للتأكد من أداء النموذج في ظروف مختلفة، أو تسريع عملية تطوير النماذج بتوليد كميات كبيرة من البيانات في وقت قصير مقارنة بجمعها من العالم الحقيقي. وفي المستقبل متوقع استخدام بيانات اصطناعية بنسبة أكبر من البيانات الحقيقية لاحظ التالي:
  6. السلام عليكم اي هي الsynthetic data واي علاقتها بالذكاء الاصطناعي ؟
  7. بشكل بسيط، الدومين هو بمثابة عنوان بيتك الذي يمثل مكان فريد تذهب إليه، لذا عندما يسألك أحد عن عنوانك تذكر له العنوان ويستطيع الذهاب إليه لزيارتك مثلاً. إذًا الدومين هو عنوان موقعك على الإنترنت، يستخدمه الزوار لزيارة موقعك، وفي الخلفية يتم ترجمة اسم الدومين في الخلفية إلى IP معين من خلال الـ DNS ومن خلال الـ IP يتم الإتصال بالسيرفر. والسيرفر هو الاستضافة التي تنشر عليها موقعك، حيث توفر لك جزء من الموارد على السيرفر (حاسوب ولكن بمواصفات مرتفعة) وذلك السيرفر يتكون من معالج ورامات ووحدة تخزين (هارديسك) وخلافه. ستجد تفصيل أكثر هنا:
  8. السلام عليكم كما هو موضح بالعنوان اريد ان اعرف الفرق بين الدومين و الاستضافة و نشر الموقع علي الانترنت ومتى نتستخدم كلا منهم وما افضل شئ منهم
  9. إذا كان المقصود هو أنه لا يستطيع أي أحد أن ينشئ موقعا مشابها له، فهذا مستحيل من الناحية التقنية. يمكن لأي شخص بخبرة جيدة أن يقلد شكل أي موقع آخر، خصوصا أن الشفرة المصدرية للواجهة الأمامية للمواقع يمكن الإطلاع عليها من خلال المتصفح. تقليد المواقع أمر شائع مثلا في عمليات النصب والاحتيال، حيث يقوم المهاجم بإنشاء صفحات تسجيل دخول تشبه صفحات المواقع المشهورة من أجل أن يقوم بخداع المستخدمين وجعلهم يدخلون كلمات سرهم في موقعه بدل الموقع الأصلي. الإجراءات هنا قانونية بحتة ولا يوجد ما يتعلق بالبرمجة هنا. لذلك يجب التواصل مع محامي لسؤاله في هذا الأمر.
  10. لا يمكنك ذلك، يستطيع أي شخص لديه القدرة على تنفيذ منتج وموقع مماثل وتقديم نفس الخدمة، لكن ليس بنفس الاسم بالطبع سيقوم بتغيير اسم الخدمة أو المنتج والتصميم قليلاً أو كثيرًا الأمر نسبي. وفي حال لم يكن المنتج أو الخدمة لديك مُسجلة ولها حقوق ملكية، فيستطيع أي شخص تقديم نفس المنتج أو الخدمة بنفس الاسم والشكل فلا يوجد ما يحمي حقوقك إن لم يتم تسجيلها في الجهة المسؤولة عن ذلك في بلدك.
  11. املك موقع هو جاهز و 100% مكتمل لكن كيف احميه من السرقة والتقليد بمعنى انه لايقدر احد انه يصمم موقع خاص به نفس موقع ويسرق الزبائن له وما هي الاجرأت التى اتخذها عند حدوث سرقة او تقليد
  12. المشكلة أنك تحاول استخدام دالة غير مناسبة في جهة العميل client-side بدلاً من جهة الخادم server-side. ففي Next.js، استخدام الدوال غير المتزامنة async في مكونات العميل يؤدي إلى مشاكل، حيث أن تلك الدوال يجب أن تُنفذ داخل دوال الخادم أو عند تحميل البيانات data fetching. عليك إعادة هيكلة المكون Chats والإعتماد على useEffect و useState لتحميل البيانات عند تحميل المكون بدلاً من استخدام دالة غير متزامنة في المكون ونقل دالة auth واستخدامها في useEffect لتحميل البيانات بعد تحميل المكون. "use client"; import { useEffect, useState } from "react"; import { auth } from "@/auth"; import { getUsersForSidebar } from "@/lib/data"; import Chat from "./chat"; import { IChatDocument } from "@/models/chatModel"; const Chats = () => { const [selectedChat, setSelectedChat] = useState<IChatDocument | null>(null); const [chats, setChats] = useState<IChatDocument[]>([]); const [loading, setLoading] = useState<boolean>(true); const [error, setError] = useState<string | null>(null); useEffect(() => { const fetchData = async () => { try { const session = await auth(); if (session?.user) { const chatsData = await getUsersForSidebar(session.user._id); setChats(chatsData); } } catch (error) { setError("Failed to load chats"); } finally { setLoading(false); } }; fetchData(); }, []); const handleSelectedChat = (chat: IChatDocument) => setSelectedChat(chat); if (loading) return <p>Loading...</p>; if (error) return <p>{error}</p>; return ( <nav className="flex-1 overflow-y-auto"> <ul> {chats.map((chat) => ( <Chat key={chat._id} chat={chat} handleSelectedChat={handleSelectedChat} selectedChat={selectedChat} /> ))} </ul> </nav> ); }; export default Chats; باستخدام useEffect لتحميل البيانات بعد تحميل المكون نتجنب استخدام دوال غير متزامنة مباشرة داخل المكون التي تسبب مشاكل خاصة في بيئة العميل.
  13. أعمل على مشروع قمت بعمله بـ nextJS 14 و typescript وكان الموقع يعمل بشكل طبيعي ولكن فجأة ظهر خطأ عندما أنتقل لصفحة chats يتوقف المتصفح عن الإستجابة ويحدث render لانهائي كما ترون في الصورة أدناه وفي أعلى الكونسول يظهر تحذير موضح في الصورة التي في الأسفل هذا ملف chats.tsx "use client"; import { auth } from "@/auth"; import { getUsersForSidebar } from "@/lib/data"; import Chat from "./chat"; import { useState } from "react"; import { IChatDocument } from "@/models/chatModel"; const Chats = async () => { const [selectedChat, setSelectedChat] = useState<IChatDocument | null>(null); const session = await auth(); const chats = session?.user ? await getUsersForSidebar(session.user._id) : []; const handleSelectedChat = (chat: IChatDocument) => setSelectedChat(chat); return ( <nav className="flex-1 overflow-y-auto"> <ul> {chats.map((chat) => ( <Chat key={chat._id} chat={chat} handleSelectedChat={handleSelectedChat} selectedChat={selectedChat} /> ))} </ul> </nav> ); }; export default Chats; الخطأ الذي يحدث فيه render لانهائي يشير إلى هذا السطر const session = await auth(); لذلك قد يكون ملف auth.ts له علاقة بالخطأ لهذا الكود الخاص بالملف في الأسفل import NextAuth from "next-auth"; import GitHub from "next-auth/providers/github"; import { connectToMongoDB } from "./lib/db"; import User from "./models/userModel"; import randomString from "random-string"; export const { handlers, signIn, signOut, auth } = NextAuth({ providers: [ GitHub({ clientId: process.env.AUTH_GITHUB_ID, clientSecret: process.env.AUTH_GITHUB_SECRET, }), ], secret: process.env.AUTH_SECRET, callbacks: { async session({ session }) { try { await connectToMongoDB(); if (session.user) { const user = await User.findOne({ email: session.user.email }); if (user) { session.user._id = user._id; session.user.userCode = user.userCode; return session; } else { throw new Error("User Not Found!"); } } else { throw new Error("Invalid Session!"); } } catch (error) { console.log(error); // Throw an error or return null to indicate an invalid session throw new Error("Invalid session"); } }, async signIn({ account, profile }) { if (account?.provider === "github") { await connectToMongoDB(); try { const user = await User.findOne({ email: profile?.email }); // Sign up user if not found if (!user) { const coding = randomString({ length: 8, numeric: true, letters: true, special: false, }); const newUser = await User.create({ username: profile?.login, email: profile?.email, userCode: coding, fullName: profile?.name, avatar: profile?.avatar_url, }); await newUser.save(); } return true; // indicate successful sign-in } catch (error) { console.log("Sign in Error: ", error); return false; } } return false; }, }, });
  14. عربة التسوق لا تتم الشراء ويطلب العنوان مع انى اضفت العناوينclickBuy project.rar
  15. وعليكم السلام، أولا، إذا كنت قد اشتريتِ أي دورة من الدورات، فسوف يظهر لك رابط جديد في شريط العناوين، يسمى "دوراتي"، من خلاله يمكنك الوصول إلى الدورات التي اشتركتِ فيها. تجدين المزيد من المعلومات حول كيفية الوصول إلى الدورات هنا: https://support.academy.hsoub.com/access-to-courses أثناء متابعة الدروس (الفيديوهات) في أي دورة، قد تواجهك تساؤلات أو مشاكل. بالنسبة لكل ما يتعلق بالدرس، يمكنك طرحه في قسم التعليقات الموجود أسفل كل درس، وسوف يقوم فريق من المدربين بالإجابة على أية أسئلة تطرحينها هناك. للمزيد من المعلومات حول هذا الأمر، يمكنك الإطلاع على هذه الصفحة: https://support.academy.hsoub.com/how-to-ask-in-courses أثناء متابعة الدروس، سيكون من الواجب عليك التطبيق مثل المدرس، وليس مجرد المشاهدة. فالمشاهدة ليس طريقة كافية للتعليم. أثناء التطبيق خلف المدرس، يمكنك التعديل على العمل وليس نسخ ما يكتبه تماما، فهذا سوف يعمق فهمك للدرس. يجب عليك أيضا الاحتفاظ بالملفات التطبيقية التي تنشئينها أثناء متابعة الدروس، لأن هذا من شروط التقدم للامتحان النهائي. أما بخصوص الحصول على الشهادة، فهناك عدة شروط يجب أن تتحقق قبلها. بالإضافة إلى احتفاظك بالملفات المذكورة وعرضها فيما بعد للإدارة، فالشروط الأخرى هي: إتمام دراسة 4 مسارات على الأقل في الدورة التي اخترتها. بالنسبة للطلبة الذين لديهم معرفة سابقة بالمجال، فقد يريدون تجاوز بعض المسارات لكي يربحوا الوقت، ولهذا لا تفرض الإدارة سوى إتمام 4 مسارات من مجموع الدورة. لكن بالنسبة للطلبة المبتدئين الذين لا خبرة لهم في المجال، فهنا لا ينصح بقفز المسارات بل من المستحسن إتمام الدورة بكل دروسها. رفع المشاريع التي تم إنجازها خلف المدرس على GitHub (لا تقلقي إذا لم تعرفي ما هو GitHub، لأنه يتم تدريس هذا في الدورات أيضا). التواصل مع الإدارة لطلب التقدم إلى الامتحان، وانتظار رد الإدارة لتحديد الموعد. الامتحان النهائي سيكون على قسمين، أولا أن تتم محادثة صوتية مع أحد المدرسين لكي يتأكد من فهمك ومتابعتك الجيدة للدروس. وثانيا يقوم بطرح مشروع تخرج عليك وسيكون مشروعا برمجيا حقيقيا وليس ورقة أسئلة. سيكون عليك القيام به في المدة التي يحددها لك المدرس. لمزيد من التفاصيل يمكنك الإطلاع على هذه الصفحة: https://support.academy.hsoub.com/exams
  16. السلام عليكم انا مسجله قريب وحابه اعرف كيف اتمم الدوره واستلم الشهاده ، هل بس ادخل الفديو واتابعه مافي اساله وكيف بيكون الاشراف علي
  17. أهلا، يرجى طرح السؤال في قسم التعليقات أسفل فيديو الدرس، حتى نعرف ما هو الدرس الذي تتحدث عنه. فهذا قسم للأسئلة العامة التي ليس لها علاقة بدروس الدورات. شكرا.
  18. مشكلتي انه يطلعي لي انه تم انشاء الجدول في سطر الاوامر لكن لا يضهر الجدول و اطلع من البرنامج و افتح قاعده البينات ثانيه ولا يطلع معي ناتج ؛ يعني حتى طفية الجاهز و شغلتة بس ما نفع شي
  19. البارحة
  20. مرحباً بكم لقد قمت بتحميل مشروعي (موقع الويب) إلى Github لفتح هذا الموقع في (Render)، ثم قمت بإجراء بعض التغييرات في هذا المشروع حيث قمت بتثبيت cloudinary بواسطة هذا الكود في Visual Studio Code: npm install cloudinary : كيف يمكنني إضافة "cloudinary" إلى مشروعي في Github ؟ لقد أجريت جميع التغييرات على الأكواد، و بقي إضافة "cloudinary" . شكراً على المساعدة
  21. دعينا نتفق أولًا على شيء هام جدًا وهو أنه لا أفضلية مطلقة لأي شيء، فلا يمكننا الجزم بأن MongoDB أفضل دائمًا من MySQL أو العكس، وإنما نقول الأنسب على حسب المشروع، فيمكن لنفس المبرمج أن يطور تطبيقين يستخدم في الأول MySQL بينما يستخدم في الآخر MongoDB ، لماذا؟ لأنه وجد أن خصائص المشروع الأول تحتاج قواعد بيانات ذات هيكلية معروفة ومحددة، بينما في التطبيق الثاني البيانات متفاوتة بشكل كبير جدًا فنحتاج مرونة وعدم تقيد بأعمدة محددة. هيا إلى مثال عملي (فبالمثال يتضح المقال) وليكن المشروع الذي تقومين بالعمل عليه وهو تطبيق حجز قاعات المناسبات: في هذا التطبيق يواجههنا احتمالان: الاحتمال الأول: أن خصائص الحجز واضحة ومحددة وثابتة، بمعني كل حجز له تاريخ، عدد مدعويين، عدد مشروبات، عدد وجبات. نلاحظ في هذا الاحتمال أننا مطالبون في كل حجز بتقديم معلومات معروفة وهي التاريخ وعدد المدعويين وعدد المشروبات وعدد الوجبات، لذلك فالأنسب في هذه الحالة استخدام قواعد بيانات مهيكلة يتم فيها إنشاء الجدول بعدد أربعة أعمدة كل عمود يخص بيانًا محددًا. الاحتمال الثاني: خصائص الحجز تتنوع وتختلف بشكل كبير جدًا لكل حجز، فهناك حجز يتم فيه تحديد التاريخ وعدد المدعويين فقط وحجز آخر يتم فيه تحديد التاريخ واسم الفرقة وعدد الوجبات وحجز ثالث يتم فيه تحديد التاريخ وعدد المدعويين ونظام الإضاءة وعدد الوجبات وفريق التصوير نلاحظ في الاحتمال الثاني أن الخصائص تختلف من حفلة إلى أخرى بشكل كبير جدًا وبالتالي لا يمكننا إنشاء جدول بأعمدة محددة ثابتة، فالاختيار الأمثل في هذه الحالة هو استخدام MongoDB ليمنحنا المرونة المطلوبة. وباتباع المثال السابق يمكن تحديد نوع قواعد البيانات في كل مشروع.
  22. ستحتاج إلى استضافة تدعم لغة بايثون ليس أكثر، وبعض الاستضافات مهيئة بشكل أفضل لبعض إطارات العمل مثل Django بحيث تُسهل عليك مهمة نشر موقعك على الاستضافة. وهناك الكثير من تلك الإضافات وأنصحك باستضافة render و fly.io فهما يدعمان إطار Django، وكلاهما يوفران باقة مجانية، والباقات المدفوعة لديهم ليست مرتفعة التكلفة.
  23. اعمل على مشروع موقع الكترونى بمفردى وعندى مشاكل فى عملية اتمام الشراء يطلب العنوان مع انى اضفت عنواين ومتأكد من ان الكود صحيح ملحوظة اريد نظرة عاملة على الموقع واصلاح اخطائه مع الشرح اذا تكرمتم clickBuy project.rar
  24. في الحقيقة هذا السؤال هام جدًا جدًا، وهو من الأسئلة المتقدمة التي ستظهر مع ذوي الخبرة، لأن هذه المشكلة ستظهر عندما يقوم المبرمج بتطوير تطبيق وتوزيعه أو تثبيته عند العميل ثم بعد ذلك يقوم بعمل إضافات على هذا التطبيق، فتظهر هذه المشكلة. دعنا نصف المشكلة: عند تطوير أي تطبيق وإخراج الإصدار الأول منه، تكون إمكانيات هذا التطبيق محدودة إلى حد ما، ولكن مع انتشار التطبيق وأخذ الإفادات من المستخدمين سوف تظهر طلبات وإمكانيات جديدة مطلوب إضافتها إلى التطبيق (وهذا شأن أي تطبيق في العالم). إذًا ما المشكلة؟ المشكلة تكمن عندما يتعامل التطبيق مع ملفات أخرى مثل قواعد البيانات، فسنجد أن الإصدار الأول من التطبيق يتعامل مع قواعد بيانات تحتوي على عدد محدود من الجداول (وليكن 5 جداول)، ولكن مع الإضافات الجديدة سنحتاج إلى إضافة جداول أخرى (وليكن 3 جداول جديدة فيصبح الإجمالي 8 جداول). هنا تكمن المشكلة، لأن المستخدمين الحاليين قد أضافوا بيانات على قواعد البيانات (ذات الخمس جداول) وبالتالي لا يمكن حذف هذه القواعد وتنزيل القاعدة الجديدة (ذات الثمان جداول). فما الحل؟ سأذكر لك الخطوات العامة لأي تطبيق مهما كان نوعه سواء تطبيق أندرويد أو تطبيق ويندوز أو ماك، هذه الخطوات يجب اتباعها أولًا: بالنسبة للتطبيقات التي لا تقوم بحذف قواعد البيانات: هنا سنحتاج فقط تنفيذ بعض الاستعلامات التي تقوم بإنشاء الجداول الجديدة على قاعدة البيانات الموجودة حاليًا، وهكذا تظل الخمس جداول القديمة كما هي ببياناتها، ويضاف إليهم ثلاث جداول أخرى) ويتم تحديث التطبيق فيعمل بدون مشاكل. ثانيًا: بالنسبة للتطبيقات التي تحذف قواعد البيانات مع كل تحديث: إذا استطعنا تعطيل خاصية حذف الملفات مع التحديث عن طريق التحكم في خصائص التطبيق بملف الخصائص مثل gradle.properties كأن نضيف السطر التالي: android.builder.sdkDownload=false أو بأي طريقة تراها مناسبة على حسب التطبيق الذي تقوم به. فإذا فعلت هذا، اتبع التعليمات المذكورة سابقًا (بالنقطة أولاً). أما إذا لم تتمكن من تعطيل هذه الخاصية فيتوجب عليك قبل تحديث التطبيق أن تأخذ نسخة احتياطية من قواعد البيانات، وبعد التحديث، تحذف قواعد البيانات الجديدة التي نزلت حالًا مع التحديث، ثم تقوم باستعادة النسخة الاحتياطية ثم تقوم بإضافة التغييرات الجديدة عليها بعد الاسترجاع (أي إضافة الثلاث جداول الجديدة). بالتأكيد الموضوع متقدم، ويحتاج بحثًا وجهدًا، ولكن هذه الخطوط العامة التي يجب وضعها بالحسبان، والتي اكتسبناها على مدار سنوات خبرتنا بالبرمجيات وكنا نعاني كثيرًا من هذه النقطة، ولم تكن البرمجيات تقدمت بعد (أتحدث عن بدايات الألفينات).
  25. يمكنك رفع المشروع على الإستضافات المجانية حيث يوجد لديك Heroku ولكنه أصبح حاليا يحتاج إلى دفع ولكنه سابقا كان أفضل شئ للاستضافه . إذا كانت قاعدة البيانات لديك sqlite يمكنك إستخدام Heroku حيث أن قاعدة البيانات الخاصة ب Heroku أصبحت خدمة مدفوعة أو يمكنك إستخدام إستضافه قواعد بيانات مجانية سواء كانت postgres أو mysql او حتى nosql . أو يمكنك إستخدام استضافة render و vercel وهما الإستضافتان المجانتيان الأفضل حاليا . ويمكنك الإستفادة من تلك الإجابات حيث تشرح خطوة بخطوة كيفية رفع المواقع على تلك الإستضافات .
  26. لدي موقع جانغو هل نشر هذا الموقع على الانترنت يطلب مواقع مخصصة لمشاريع جانغو ام يمكن نشره علي اي موقع اخر اريد بعض الاستضافات المجانية او مدفوعة يثمن 1$ الي 3$
  27. يقدم لنا الأمر desc أساسيًا معلومات عن الأعمدة الموجودة بالجدول مثل نوع بيانات العمود data type، المقيدات constraints والخصائص الأخرى. لكن لاستعراض المفاتيح التابعة (الأجنبية) Foreign Keys الخاصة بجدول معين وليكن bonuses نستخدم الاستعلام التالي SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = (SELECT DATABASE()) AND REFERENCED_TABLE_NAME = 'bonuses';
  28. لماذا في جدول الذي في صورة تاليه به 4 مفاتيح اجنبية لكن عندما اعمل desc مفتاحين فقط هما emp_id و created_id
  1. عرض المزيد
×
×
  • أضف...