النتائج 1 إلى 2 من 2

الموضوع: ياشباب الجدول الذكي مارأيكم في فكرتي

  1. #1

    ياشباب الجدول الذكي مارأيكم في فكرتي



    بسم الله الرحمن الرحيم

    السلام عليكم ورحمة الله وبركاته وبعد

    أخواني الأعزاء لدي فكرة جديدة (قد تكون جديدة بالنسبة لي ولا أدري إن كان سبقني بها أحد ولكن سأكون مسرور لوكان اكتشافها علي يدي)

    وإذا كانت أول مرة فأسميها (وهي تسمية من عندي فقط ) الجدول الذكيGTable .

    مع العلم اني طرحت هذا الموضوع من قبل في موقع قرية php تحت الرابط التالي :

    http://www.phpvillage.com/phpBB2/viewtopic.php?t=3778

    مقدمة :

    من المعروف أنه يمكنك إنشاء جداول في قاعدة البيانات بحقول مختلفة الأنواع ومن أنواع الحقول BLOB وكما هو معروف للجميع أن أختصاره Binary Large Object وهو لتخزين بيانات ثنائية مثل الصور وأشياء مختلفة.


    الفكرة :

    ومن هذه المقدمة جائتني فكرة ولقد قمت بتجربتها وهي فاعلة بإذن الله تعالى فبما أن الحقل من نوع BLOB يقبل بيانات مختلفة وثنائية فإنه يستطيع تخزين الكائنات وهنا مربط الفرس ففكرة الجدول الذكي هي جدول بسيط مربوط بكائن يتحكم في الجدول.

    الميزة :

    1-الميزة في هذه العملية أنك تستطيع التعديل في الكائن المكتوب ضمن ملف php فيتعدل الجدول معه تلقائياً أي كأنك تقوم بإضافة حقل إلى الجدول بشكل تلقائي ولن تتضرر باقي البيانات ويمكنك إضافة الحقول بشكل اتوماتيكي بأي عدد تريده من الحقول دون أن يتأثر الجدول.
    2- الفائدة المرجوة من فكرة الجدول الذكي ((GTable انه اذا كان لديك موقع مبني على نظرية الجدول الذكي فلن تقوم بالتعديل على قواعد البيانات أبداً الا اذا اردت زيادة جداول جديدة إلى قواعد البيانات فقط.
    3- جميع الجداول في قاعدة البيانات تأخذ التركيب نفسه ماعدا في إسم الجدول فقط.
    4- الحقل المضاف إلى الجدول الذكي يتميز ايضاً بأنه من النوع variant اي النوع الحر فيمكنك إضافة أرقام وحروف وصور والكثير غيرها دون أي قيود.


    أما باقي المميزات فسأتركها لكم بعد تجربة نظام الجدول الذكي(QTable)

    الطريقة:

    [size=green]الخطوة الأولى[/size]

    تقوم بإنشاء جدول فيه حقلين فقط :

    الأول (id) : وهو من النوع الصحيح ويكون بزيادة تلقائية
    الثاني (object) : ويمكنك تسميته بأي اسم المهم من نوع BLOB







    كود PHP:
    Create table Student 

       
    id        INT NOT NULL AUTO_INCREMENT
       
    object   BLOB NOT NULL 



    من النظرة الأولى فإن الجدول سهل جداً ولكن صدقوني أن فعل هذا الجدول كبير جداً ولقد جربة هذا الطريقة ونفعتني كثير.

    ونظام الجدول الذكي أن تكون جميع الجداول بهذه الصيغة وتختلف فقط في اسم الجدول للتمييز بينها فقط

    وإسم الجدول في مثالنا هذا هو Student وهو كما يشير الإسم جدول يحمل معلومات عن الطلاب.



    الخطوة الثانية:

    هي إنشاء الكائن الذي نريد ربطه مع هذا الجدول

    والآن لنقوم بإنشاء ملف نسميه student_obj.php ونكتب فيه الكائن الذي سيرتبط مع الجدول.

    ملاحظة : المتغيرات التي تكتبها داخل الكائن تمثل حقول الجدول.

    وإليكم مثال بسيط للكائن :

    كود PHP:

    Class  Sobj 

        var   
    name;        //إسم الطالب 
        
    var   addres;           // عنوان السكن 
        
    var   age;                 // عمر الطالب 

       
    function Sobj() 

        
    $this->name    ""
        
    $this->addres  ""
        
    $this->age       0

    }; 
    ويمكنك إضافة دوال وغيرها حسب مايتطلبه العمل الذي تقوم به المهم انك تضع ضمن الجدول حقول افتراضية فقط وليس لها صلة بالجدول الحقيقي اصلاً.

    كما ترى وضعنا في الكائن وضعنا المتغير age وهو سيحمل عمر الطالب ولكن يمكنك تخزين بيانات نصية ايضاً ضمن هذا الحقل لأنه متغير php يمثل حقل افتراضي مثل أن تكتب (عشرين سنة) بينما لوكان الجدول حقيقي فأنت لست مخير فإما أن تضعه رقمي أو نصي فقط وهذه احد حسنات الجدول الذكي.

    وكما ترى الدالة التي وضعناها تستخدم لتمهيد الحقول الإفتراضية فقط لا أكثر





    المهم دعنا نكمل :الآن قد يقول قائل ما علاقة هذا الكائن بالجدول الذي قمنا ببنائه فأقول له انتظر وستعرف ولا تتسرع.

    أول عملية تقوم بعملها بعد إنشاء الجدول تكون كالعادة هي إدخال بيانات جديدة إلى الجدول وسيكون في نظريتنا كالتالي :

    كود PHP:

    $QTS 
    = new Sobj(); 

    $QTS->name      "عبدالله عيد المحمادي"
    $QTS->addres    "مكة المكرمة"
    $QTS->age         21
    الأن قمنا بتعبئة الحقول الإفتراضية بعد ذلك نستخدم دوال الأرشفة وهي كالتالي :

    1- serialized وتستخدم لتحويل البيانات إلى بيانات ثنائية لتخزينها ضمن الجدول وسنستخدمها لأرشفة الكائن الخاص بنا وهو Sobj

    2- unserialized
    ومن الإسم يتضح أنها ترجع البيانات من ثنائية إلى وضعها الحقيقي (وفي مثالنا سترجعها من بيانات ثنائية إلى كائن Sobj ).


    ادخال صف في الجدول:
    بعد ما قمنا بتعبئة بيانات الكائن والذي يمثل الحقول الإفتراضية لجدول الطلاب نقوم بتخزين الكائن ضمن الجدول كالتالي : (وذلك طبعاً بعد إجراء عملية الإتصال بقاعدة البيانات واجراء العمليات المعتادة الأخرى)

    كود PHP:

    $archive_data 
    serialized($QTS); 
    $result mysql_query("INSERT INTO Student VALUES(NULL,".$archive_data.")"); 

    الآن تم تخزين البيانات ضمن جدول Student وهي البيانات الثنائية.


    الخطوة التالية :

    وهي كيفية التعامل مع البيانات في الجدول واستخراجها ومعرفتها وهي كالتالي.
    كود PHP:

    $result 
    mysql_query("SELECT * FROM Student"); 

    $first_record mysql_fetch_array($result); 

    $QTS unserilized($first_record); //  هنا تتم عملية استرجاع الكائن 


    print($QTS->name); 
    print(
    "<BR>".$QTS->addres); 
    print(
    "<BR>".$QTS->age); 
    إلى حد الآن عرفنا طريقة الإخراج والإدخال ولكن قد يسأل سائل كيف يمكنني مثلاً الإستعلام وفق شروط معينة مثل (الإستعلام عن عدد الطلاب الذين تكون اعمارهام اكبر من 20 سنة)

    فأقول له الطريقة ايضاً بسيطة وهي كالتالي وذلك بعد اجراء عملية الإخراج كما هو موجود بالأعلى نقوم بما يلي
    وذلك بوضعها في حلقة عند استخراج كل صف من الجدول:


    كود PHP:
    $Count 0

    For(


    … 
    … 

    If($QTS->age 20
       
    Count++; 

    وباقي الإستعلامات أظن عقلك بدأ يخمنها.











    [size=green]المهم نرجع لسؤالنا وهو مالشئ الجديد هنا[/size]

    فأقول لك افترض ان هذا الجدول الذي قمنا بإنشائه موجود ضمن موقعك وقمت بعمل صفحة HTML تعمل كواجهة لإدخال بيانات الطلاب ضمن الجدول وبعد فترة من الزمن أردت إضافة حقل (رقم الهاتف الخاص بالطالب) فإنك لن تضطر إلى التعديل في الجدول ولكن كل ماستقوم بفعله هو الذهاب والتعديل في الكائن كما يلي :

    كود PHP:

    Class  Sobj 

        var   
    name;        //إسم الطالب 
        
    var   addres;           // عنوان السكن 
        
    var   age;                 // عمر الطالب 
        
    var  phonenumber;  //رقم الطالب 

       
    function Sobj() 

        
    $this->name    ""
        
    $this->addres  ""
        
    $this->age       0

    }; 
    والآن كما ترى النتيجة فإننا قمنا فقط بالتعديل على الكائن وبذلك سيقوم بإضافة حقل افتراضي لرقم الهاتف الخاص بالطالب وذلك دون أن يؤثر على الجدول أو بكلام أخر فإن الجدول يقول (خلك بعيد حبك يزيد).

    وبما أن عملنا هو على حقول افتراضية فإنه يمكنك إضافة ماتشاء من الحقول الإفتراضية دون أي تأثير مسبق على الجدول

    وهذه هي طريقة الجدول الذكي وأرجوا أن تكون الفكرة هذه قد وصلت للجميع

    وأرجوا من الجميع العفو عني في حالة حدوث خطأ فإن أخطأت فمن نفسي والشيطان وإن أصبت فمن الله عز وجل.


    ونريد رأيكم في فكرة نظام الجدول الذكي وأنا أقبل أي إتهام أو نقد على قولهم Free
    قول ماتريد وأنا صدري واسع

    ولكم مني خالص الشكر

    اخوكم عبدالله عيد المحمادي
    _________________
    إن أخطأت فمن نفسي والشيطان وإن أصبت فمن الله سبحانه وتعالى





    __________________
    قال صلى الله عليه وسلم (كلمتان خفيفتان على اللسان ثقيلتان في الميزان (سبحان الله وبحمده ** سبحان الله العظيم) اوكما قال صلى الله عليه وسلم . (فهل هذه الكلمتان ثقيلتان على لسانك كي لا تقولها مرة واحدة في اليوم على الأقل)
    عبدالله عيد غير متواجد حالياً


  2. #2
    عضو جديد
    تاريخ التسجيل
    May 2001
    المشاركات
    17


    قرأت الموضوع بسرعه وبدون تدقيق كبير لذا اعذرني ان كات هناك خطأ او عدم فهم كامل لفكرتك.


    لكن الفكره كما فهمتها باختصار -قد يكون مخلا- تقوم على اساس توحيد جداول قاعدة البيانات لتصبح كلها من النوع بلوب ومن ثم تعتمد على الدوال serialized و unserialized لتخزين وقراءه البيانات.


    الفكره جديده بالنسبه لقواعد البيانات وذلك لوجود عيوب كبيره فيها .. أولا حقول البلوب تأخذ مساحه كبيره نسبيا في التخزين والتحميل في قاعدة البيانات مما يزيد التحميل على خادم قواعد البيانات .. من جهة أخرى أنت هنا تفقد أهم خصائص استخدام قاعدة بيانات وهي السرعه في البحث واستخراج النتائج فباستخدامك لتقنيات البحث والتحديد عن طريق نظام قواعد البيانات نفسه تحصل على أعلى سرعه ممكنه بأقل تحميل على الخادم للوصول الى البيانات المطلوبه .. وكما يعلم كل عشاق ال MySQL ان الاساس الذي بني عليه هذا البرنامج هو سرعة استخراج نتائج البحث.


    قد تكون الفكره مميزه لو كنت تريد تخزين البيانات على ملفات بدون استخدام قاعدة بيانات اما مع استخدامك لقواعد البيانات وهذه الفكره فأنت تخسركل مميزات قاعدة البيانات بدون فائده تستحق تحمل هذه الخساره.


    يبقى ماذكرته وجهة نظر شخصيه تحتمل الصواب والخطأ وتخضع للتقدير الشخصي للمبرمج وان كنت مقتنعا تماما بصوابها





    __________________
    http://www.saudisp.com
    HTML غير متواجد حالياً





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض