مدونة الويب 2.0

  • الرئيسية
  • تعريف بالمدونة
  • المصادر
  • تواصل معي
  • أخبار المدونة
  • أفكار
  • استبيان
  • برمجة
  • تصميم
  • تطوير
  • كتب
  • مدونات عربية
  • مهمات
  • مواقع

تصميم قاعدة البيانات

15, أغسطس 2008 التصنيف: تطوير

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

عذراً للتأخير …

اليوم سنقوم بتصميم قاعدة البيانات لقائمة المهام وقد استعرضنا في مرحلة التطوير:

  • تحديد التقنيات

سيكون لدينا الجداول التالية:

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

وستكون هيكلية الجداول كما يلي:
- جدول المهام (tasks):

CREATE TABLE IF NOT EXISTS `tasks` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) collate utf8_unicode_ci default NULL,
`status` int(3) default NULL,
`priority` int(3) default NULL,
`duedate` datetime NOT NULL,
`created` datetime default NULL,
`modified` datetime default NULL,
`group_id` int(11) default NULL,
PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

- جدول المستخدمين (users):
users:

CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(64) collate utf8_unicode_ci default NULL,
`password` varchar(64) collate utf8_unicode_ci default NULL,
`name` varchar(64) collate utf8_unicode_ci default NULL,
`email` varchar(128) collate utf8_unicode_ci default NULL,
`status` int(3) default NULL,
`activation` varchar(64) collate utf8_unicode_ci default NULL,
`created` datetime default NULL,
`modified` datetime default NULL,
PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

- جدول القوائم (groups):
مهم: تم تحرير الكود في 10-9-2008 ويجب على كل المشتركين مسح جدول Groups أو Lists وإعادة تنفيذ هذا الكود في قاعدة البيانات. والتعديل عبارة عن تصميم الجدول من جديد وتفادي الأخطاء السابقة مثل listname. وغيرها.

CREATE TABLE IF NOT EXISTS `groups` (
`id` int(11) NOT NULL auto_increment,
`groupname` varchar(255) collate utf8_unicode_ci default NULL,
`created` datetime default NULL,
`modified` datetime default NULL,
`user_id` int(11),
PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

الآن بعض الشرح والتوضيح:

  • يوجد في الكيك قواعد للمسميات سواء كانت في قاعدة البيانات أو بأسماء التوابع والأصناف لذلك سأذكرها:
  1. أسماء الجداول تكون بصيغة الجمع (lists – users)
  2. أسماء الحقول في الجداول تكون بصيغة المفرد (id – username)
  3. عند ربط جدول مع آخر (الربط يكون على مستوى PHP وليس على مستوى فاعدة البيانات)، يجب أن تكتب اسم الحقل من الجدول الثاني مسبوقاً باسم الجدول بالمفرد (user_id) لاحظ نريد الربط مع حقل id من جدول users.
  4. الحقول (created – modified) يجب أن تسميها بهذا الاسم بالضبط، حيث يقوم الكيك بالتعديل عليهم تلقائياً، فحقل (created) يقوم بالكتابة فيه عند إنشاء السجل، وحقل (modified) يقوم بتحديثه كل ما نقوم بتحديث هذا السجل لوحده! وهذا مايسميه الخبازين (الخباز هو كل اصطلاح لكل شخص يستعمل الكيك D:) بالـ automagic.
  • بالنسبة لطول الحقول النصية فهي مسألة نسبية نوعاً ما تختلف بحسب كل موقع وكل مطور.
  • حقول (stauts – priority) وضعت نوعهم كأرقام كي نوفر المساحة عوضاً عن محارف وهذا هو الأسلوب الأصح، ووضعت الطول 3 أرقام مما يعطينا 8 احتمالات وهذا جيد وكافي، وبرمجياً سنقوم بالموازنة بينهم (مثلاً رقم 0 يشير إلى مهمة عادية و 1 يشير إلى مهمة عاجلة وهكذا)

أرجو أن يكون الشرح واضحاً وكما ذكرت هذا الشرح ليس للمبتدئين في تطوير المواقع.

شارك هذه التدوينة:
إضافة 'تصميم قاعدة البيانات' إلى Del.icio.usإضافة 'تصميم قاعدة البيانات' إلى diggإضافة 'تصميم قاعدة البيانات' إلى Technoratiإضافة 'تصميم قاعدة البيانات' إلى Stumble Uponإضافة 'تصميم قاعدة البيانات' إلى Google Bookmarksإضافة 'تصميم قاعدة البيانات' إلى FaceBookإضافة 'تصميم قاعدة البيانات' إلى MySpaceإضافة 'تصميم قاعدة البيانات' إلى Twitterإضافة 'تصميم قاعدة البيانات' إلى FriendFeed
الوسوم: الكيك, تعلم الكيك وتطوير المواقع بالبيت
أرسل هذه التدوينة لصديق أرسل هذه التدوينة لصديق
طباعة هذه التدوينة طباعة هذه التدوينة

    إقرأ أيضاً:

    • سؤال وجواب عن الكيك
    • بنية الكيك وأول controller
    • تحميل وتثبيت الكيك
    • تحديد التقنيات
    • الشهادات

9 تعليق في “تصميم قاعدة البيانات”

  1. تعلم الكيك وتطوير المواقع بالبيت | مدونة الويب 2.0: 15, أغسطس 2008 في 5:56 م

    [...] التي يجب استخدامها (بالتأكيد من ضمنها الكيك). 6- تصميم قاعدة البيانات 7- البرمجة 8- التصميم 9- اختبار الموقع 10- تشغيل وحجز اسم [...]


  2. أبوبكر: 17, أغسطس 2008 في 9:23 ص

    السلام عليكم ورحمة الله وبركاته
    بدأت تضح ميزات استخدام الكيك :) فواضح أنها ستوفر الكثير من الجهد في التعامل مع قادعدة البيانات.
    عندي اقتراحان:
    الأول: ما رأيك في أن تعرض علينا البرامج التي تفضلها أو عموما البرامج الجيدة في التعامل مع mysql أنا أستخدم Navicat فهل هناك برنامج أفضل من ذلك مثلا أم لا.

    الثاني: ما رأيك في كتابة الكود الذي ينشئ هذه الجداول أوتوماتيك، وهذه الفكرة ستساعدنا إن فكرنا أن نقوم بعمل صفحة setup لمشروعنا.

    أرجو أن تكون الافكار واضحة.

    وجزاك الله خيرا


  3. أبوبكر: 17, أغسطس 2008 في 9:43 ص

    السلام عليكم:
    هذا هو الكود الذي استخدمته لإنشاء الثلاث جداول:

    create table tasks
    ( id int(11),
    title varchar(255),
    status int(3),
    priority int(3),
    created datetime,
    modified datetime,
    list_id int(11) ,
    PRIMARY KEY (id) );

    create table users
    ( id int(11),
    username varchar(64),
    password varchar(64),
    name varchar(64),
    email varchar(128),
    status int(3),
    activation varchar(64),
    created datetime,
    modified datetime,
    PRIMARY KEY (id) );

    create table lists
    ( id int(11),
    listname varchar(255),
    created datetime,
    modified datetime,
    user_id int(11),
    PRIMARY KEY (id) );

    أرجو أن يكون مفيد.


  4. خالد: 17, أغسطس 2008 في 12:13 م

    ممتاز أخي أبو بكر سأقوم بنقلهم لهذه للتدوينة … وبالنسبة للبرامج لا أستخدم سوى PHPMyAdmin وأحياناً برنامج DB Visual Architect من حزمة VP Suite


  5. تحميل وتثبيت الكيك | مدونة الويب 2.0: 17, أغسطس 2008 في 8:31 م

    [...] تصميم قاعدة البيانات [...]


  6. محمد العاني: 4, أكتوبر 2008 في 8:14 م

    اخي خالد فهمت من الـ sql اعلاه بان المستخدم الواحد يستطيع ان يملك اكثر من قائمة مهام لكل قائمة مهام مختلفة ؟ هل كلامي صحيح

    والسؤال الثاني قمت حضرتك باضافة الحقل status في جدول المستخدم ما فائدته .

    هل هو لتحديد الصلاحيات للمستخدمين ام ماذا ؟

    واخيرا فما هي داينميكية الـ activation , ولماذا جعلته بالطول 64 ؟

    وشكرا اخوك محمد العاني


  7. خالد: 4, أكتوبر 2008 في 8:41 م

    1- نعم كلامك صحيح، يستطيع المستخدم إنشاء أي عدد من القوائم
    2- الذي نريد عمله هو أنه عند التسجيل سنرسل للمستخدم رابط على بريده وعند الضغط عليه سيتفعل حسابه. فال status تعطينا حالة المستخدم هل هو مفعل أم لا حتى نسمح له بالدخول إن كان مفعلاً لحسابه.
    3- هذا مايتطلبه الكيك وستعرف ذلك عندما نكمل بعملية التسجيل. فهو يولد شريط طوله 64 محرف لتفعيل التسجيل

    عفواً


  8. محمد العاني: 4, أكتوبر 2008 في 10:00 م

    طيب اخي العزيز اذا كان الـ status للتفعيل – وهذا كما عهدت في تطبيقاتنا – فليس من المفروض ان نضع حقل نحدد فيه السوبر ادمن والذي يملك صلاحيات التحكم بالمستخدمين ؟

    وبالنسبة لديناميكية التفعيل فانا اعرف تلك الديناميكية ولكني اريد ان اوضح اننا ممكن ان نستخدم الحقل activation نفسه للتفعيل وذلك من خلال ابدال سلسلة التفعيل البقيمة activated ولك مني تحية


  9. خالد: 4, أكتوبر 2008 في 10:18 م

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


شاركنا برأيك؟

الرجاء الكتابة باللغة العربية الفصحى، وإذا كنت تريد كتابة سؤال حاول البحث في غوغل أولاً فغالباً ستجد عنده الخبر اليقين.

  • الأكثر قراءة
  • الأحدث
  • الأرشيف
  • تعلم الكيك وتطوير المواقع بالبيت
  • تنظيم الوقت البرمجي
  • أفكار ومواقع ويب 2 شهيرة
  • مقدمة في CakePHP
  • لماذا غوغل شريرة!
  • الخطوط العربية
  • تصميم قاعدة البيانات
  • هل تريد أن تكسب 1000 دولار؟
  • مواقع عربية بالدروبال
  • موقع الجزيرة الجديد
    1. غوغل، جوجل، كوكل أو قوقل!
    2. دروبال تعلمه بالعربي
    3. تحديثات بالجملة
    4. صفحة 404
    5. مدونة الويب 2.0 في 2010
    6. عن غيوم
    7. وحدة Scrollable Content لدروبال
    8. موقع بدون قاعدة بيانات
    9. دول العالم باللغة العربية
    10. ثيم خفيفة للفايرفوكس
    1. أغسطس 2010
    2. مارس 2010
    3. فبراير 2010
    4. يناير 2010
    5. ديسمبر 2009
    6. سبتمبر 2009
    7. أغسطس 2009
    8. يوليو 2009
    9. يونيو 2009
    10. مايو 2009
    11. مارس 2009
    12. فبراير 2009
    13. يناير 2009
    14. ديسمبر 2008
    15. نوفمبر 2008
    16. أكتوبر 2008
    17. سبتمبر 2008
    18. أغسطس 2008
    19. يوليو 2008
    20. يونيو 2008
    • اشترك بآخر الأخبار RSS

      Feeds Counter

      أو

    • الاستبيان

      هل طورت أو ساعدت بتطوير مشروع مفتوح المصدر؟

      مشاهدة النتيجة

      Loading ... Loading ...
    • أوسمة

      Ajax css IDE jQuery php SEO TinyMCE أخبار المدونة أذكار أطر العمل أفكار إدارة المحتوى إدارة محتوى إضافات استبيان الأجاكس الأمان الاختبارات الآلية الكيك برمجة تحديثات تحميل تدوينات رمضان تصميم تطوير تعريب تعلم الكيك وتطوير المواقع بالبيت تكتيك تنظيم الوقت جوائز حديث دروبال دعاية فايرفوكس فرص عمل كتب مسابقات مهمات مواقع نصائح هندسة برمجيات وورد بريس

    حول المدونة

    • جميع الحقوق محفوظة © 2008-2010 مدونة الويب 2.0.
    • يمكنك نقل المحتويات أو اقتباس أي جزء منها ويفضل ذكر المصدر.
    • من الممكن أن تساعدك خريطة الموقع.

    عروض العمل

    • يمكنك أن تناقشني حول عروض العمل للمدونات أو لمواقع الويب 2.0.
    • أيضاً يمكنك استشارتي في وضع التفاصيل لمدونة أو لفكرة مشروع جديد.
    • سيرتي الذاتية على My Linkedin Profile

    تواصل معي

    • خالد الحوراني مطور ويب 2.0
    • دمشق - سوريا
    • تابع أخباري على My Twitter account
    • أو راسلني فوراً