مدونة الويب 2.0

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

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

August 15, 2008 - الجمعة 13 شعبان 1429 التصنيف: تطوير

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

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

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

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

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

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

وستكون هيكلية الجداول كما يلي:
- جدول المهام (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: August 15, 2008 - الجمعة 13 شعبان 1429 في 5:56 م

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


  2. أبوبكر: August 17, 2008 - الأحد 15 شعبان 1429 في 9:23 ص

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

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

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

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


  3. أبوبكر: August 17, 2008 - الأحد 15 شعبان 1429 في 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. خالد: August 17, 2008 - الأحد 15 شعبان 1429 في 12:13 م

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


  5. تحميل وتثبيت الكيك | مدونة الويب 2.0: August 17, 2008 - الأحد 15 شعبان 1429 في 8:31 م

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


  6. محمد العاني: October 4, 2008 - السبت 05 شوال 1429 في 8:14 م

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

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

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

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

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


  7. خالد: October 4, 2008 - السبت 05 شوال 1429 في 8:41 م

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

    عفواً


  8. محمد العاني: October 4, 2008 - السبت 05 شوال 1429 في 10:00 م

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

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


  9. خالد: October 4, 2008 - السبت 05 شوال 1429 في 10:18 م

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


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

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

  • الأكثر قراءة
  • الأحدث
  • الأرشيف
  • تعلم الكيك وتطوير المواقع بالبيت
  • أفضل الأدوات لرفع الملفات
  • تنظيم الوقت البرمجي
  • مقدمة في CakePHP
  • أفكار ومواقع ويب 2 شهيرة
  • لماذا غوغل شريرة!
  • الخطوط العربية
  • هل تريد أن تكسب 1000 دولار؟
  • تصميم قاعدة البيانات
  • مواقع عربية بالدروبال
    1. كتب مطلوبة
    2. إصلاح علة أمنية في دروبال 7.3 و 7.4
    3. حل المشكلة أم الترقيع؟
    4. مراجعة كتاب 50 Tips and Tricks for MongoDB Developers
    5. تعريب الوحدات الإضافية
    6. البرامج العربية
    7. تعريب الدروبال 7 – العد التنازلي للنواة
    8. تعريب الدروبال 7 – اليوم الثالث
    9. تعريب الدروبال 7 – اليوم الثاني
    10. تعريب الدروبال 7 – اليوم اﻷول
    11. تعريب الدروبال 7
    1. يونيو 2011
    2. مايو 2011
    3. أبريل 2011
    4. مارس 2011
    5. فبراير 2011
    6. يناير 2011
    7. ديسمبر 2010
    8. نوفمبر 2010
    9. أكتوبر 2010
    10. أغسطس 2010
    11. مارس 2010
    12. فبراير 2010
    13. يناير 2010
    14. ديسمبر 2009
    15. سبتمبر 2009
    16. أغسطس 2009
    17. يوليو 2009
    18. يونيو 2009
    19. مايو 2009
    20. مارس 2009
    21. فبراير 2009
    22. يناير 2009
    23. ديسمبر 2008
    24. نوفمبر 2008
    25. أكتوبر 2008
    26. سبتمبر 2008
    27. أغسطس 2008
    28. يوليو 2008
    29. يونيو 2008
    • اشترك بآخر الأخبار RSS

      Feeds Counter

      أو

    • أشارك بتعريب دروبال 7

    • أراجع كتب Oreilly

      I review for the O'Reilly Blogger Review Program
    • أفضل هدية تقدمها لي

    • تقنية الطماطم

      I Use the Pomodoro Technique
    • عشرون عام لمشروع اللينكس

      I'll be celebrating 20 years of Linux with
The Linux Foundation!
    • وسوم

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

    حول المدونة

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

    عروض العمل

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

    تواصل معي

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

    Switch to our mobile site