شرح: أنشاء قاعده بيانات xampp (mySQL)

السلام عليكم الجميع.

أن شاء الله تكونو بخير يارب. ولاتنسون تجيبون معاكم قهوه او شاهي عشان تركزون معاي كويس 🙂

نبدء بسم الله.

اليوم راح اشرح طريقة انشاء قاعده بيانات بعد ماشرحنا كيف رسم قاعده بيانات في ERD

ولكن هالمره راح نسوي قاعده بيانات بتكون عن طريق برنامج اسمه xampp

اذا ماحملته او ماقريت عن الموضوع تكلمت عنه

تفضل هنا:

عن موضوع xampp

تأكد انك حملت برنامج xampp بنجاح واذا كنت تستخدم لينكس ايضآ نفس الشئ

شغل البرنامج و تأكد اللبمة الخضراء شغاله عندك MySQL Database and Apache

ملاحظة مهمة نسيت اقولها لكم بالموضوع: هذي واجهة برنامج باللينكس ولكن الويندوز والماك يختلف بس كلهم نفس العمل انك تسوي start وتشتغل معاك بشكل جيد.

مثال بالويندوز راح تكون كذا:

example from google

المهم نكمل

run xampp

طبعآ انا شغاله عندي و مايحتاج اضغط start ولكن اذا عندك بالبرنامج و اللمبة حمراء

يجب عليك انك تضغط Start كل من Apache and database

ولاتنسى الاعدادات انصحك تغير البورت عن طريق Configure لانه مانبغى هذا برنامج يتعارض مع اي سيرفر او برنامج اخر موجود في جهازك.

نضع بورت وهمي 1234 مثل موضح بالصوره فوق.

بعد ماتنتهي من هنا تضغط موافق ثم تغلق البرنامج لاننا ليس بحاجة اليه و السيرفر والقاعده بيانات راح تكون شغاله في Localhost تبعك.

وأذا كنت تبغى تتأكد السيرفر شغال معاك بشكل سليم

ادخل من المتصفح هذا العنوان

http://localhost:1234/

اذا ظهرت لك هذي الصفحة معناه سيرفر تبعك شغال و سليم لايوجد اي مشاكل.

Making sure if server works or not

طبعآ كل هذا موجود في جهازك Local host ولكن تحتاج الانترنت لكي تستخدمه.

بعد ماتأكدنا كل شي تمام الحين نبدء مع القواعد بيانات.

هنا راح ندخل على صفحة phpmyadmin

عن طريق المتصفح بعد localhost:1234 نضع علامة / ثم phpmyadmin

هذا الرابط:

http://localhost:1234/phpmyadmin
Phpmyadmin

هذي صفحة قاعد بيانات و تقدر تستخدمها لما تسوي موقع و تبغى تحفظ بيانات اين كانت مثلآ طلاب او موظفين او بيانات اتصالات و كل البيانات راح تنحفظ في هذي قاعده بيانات و طبعآ بأختلاف اللغه تقدر تستخدم PHP او غيرها ولكن لن نشرح هذا اليوم لانه مو موضوعنا.

هنا راح اشرحلكم القوائم قبل مانبدء الانشاء قاعده بيانات

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

باللون الازرق: هذا اسم السيرفر تبعك وراح تلاحظ لما تمرر الماوس عليها تقدر تضغط عليها و بيرجعك على نفس الصفحه هذي. وتلاحظ ايضآ لما تتصفح بالقواعد بيانات راح تشوف يتغير وتشوف اسم القاعده بيانات الى تستخدمها.

باللون الاخضر: هذي خيارات ولكن لن نستخدمها كلها الا database و SQLو structure فقط.

و ايضآ تقدر تسوي قاعده بيانات بدون كتابة الكود ولكن نحتاج نشرحها عن طريق كتابة الكود وهذا سبب فتح الموضوع اليوم :).

للعلم سوف اشرح موضوع اخر في SQL live عن طريق متصفح ولكن هذا موضوع ثاني وليس اليوم.

وايضآ راح اشرح انواع data type بالموضوع ثاني بسبب هنا نركز على انشاء قاعده بيانات فقط.

بحيث ماحد يتشتت و يضيع :).


عالعموم نبدء.

اليوم راح استخدم انشاء قاعده بيانات الى استخدمناها في ERD كما شرحنا سابقآ.

في البداية لازم نروح من الخيارات و نضغط SQL ثم بالخانة نكتب الكود:

CREATE DATABASE WORK_SHOP

create database هذا انشاء قاعده بيانات وراح تنضاف بالقائمة عندك باليسار.

work_shop: اسم قاعده بيانات الى اخترناه وتقدر تختار اي اسم كانت.

وراح تلاحظ بعض مانضغط على كلمة GO راح تنضاف في قائمة قاعده بيانات الى متواجده باليسار.

مثال بالصوره:

create database

تلاحظ طلع النتيجة باللون الاخضر معناه النتيجة سليمة و تم اضافتها بالقائمة قواعد بيانات بنجاح.


ألان نريد ننشئ اول جدول و يكون من نوع parent و بشرط اساسي ان لايوجد FK وألا سوف يظهر لك خطأ وبالغالب بيمشي معاك ولكن بيظهر لك خطأ في حال انك ماأضفت parent تبع.

هذا الجدول:

USE Work_shop 

create TABLE customer(
    cust_ID     number  primary key,
    cust_fname  VARCHAR(20),
    cust_Lname  VARCHAR(20) UNIQUE,
    cust_address VARCHAR(30),
    cust_Email   VARCHAR(50),
    cust_phone   integer,
    dataoffirstConact DATE
);

ملاحظه: تأكد انك تستخدم USE ثم اسم القاعده الى تشتغل عليه حاليآ بحيث مايظهر لك خطأ او جدول الى سويناه يروح مكان اخر في قاعده بيانات. والمعلومات جاهزه عندي لتوفير الوقت 🙂

مثال بالصوره متحركة:

راح تلاحظون تم اضافة الجدول تحت اسم work_shop قاعده بيانات.

طيب سؤال؟ في حال عكسنا الموضوع بدال مايكون customer يكون vehicle ؟

هل راح يقبل؟ لا. ماراح يقبل حتى لو اشتغل معاك بس بالواقع لما تجي تستدعي معلومات راح تلاحظ عندك اخطأ بالمفاتيح او اشياء ناقصة بالاصل مثل فقدان parent تبعه.

راح نوضحها بشكل اكثر بالمقال اخر في SQL .live

نجي جدول ثاني الى هو vehicle يعتبر CHILD او يرجع الى جدول CUSTOMER

لانه مثلآ لو جينا نستدعي او نتكلم عن طريق relationship

  • يكون كل customer واحد يكون عنده اكثر من سياره.
  • كل سيارات يكون يمتلكها Customer واحد فقط تمام.

لهذا سبب اخترنا customer as parent و vehicle as child

هنا مثال بالصوره:

هنا اضفنا جدول vehicle و تم اضافتها بنجاح.

هنا نجي جدول اخر من نوع parent

create table Mechanic(
    Mechanic_ID   integer  PRIMARY KEY,
    mech_fname   VARCHAR(20),
    mech_lname   VARCHAR(20) unique, 
    mech_dataofhiring date
);

طيب ياعبدالعزيز كل شوي تقول parent او child؟ مافهمت؟

هذا طريقة او method بحيث انك تفهم كيف تستخدم PK and FK بطريقه انك تتفادى من الاخطأ وتربط العلاقه بشكل جيد من نوع M:1

اذا ماقريت موضوع سابق هذا انصحك تقراه لو مافهمته.

parent method

المهم نرجع ونكمل..

بسبب وضعنا parent اخر

بسبب نريد نضع childs يعني child تبع vehicle و اخر child تبع mechanic

والجدول راح يكون هو service او الصيانة.


طيب ياعبدالعزيز وين child بالموضوع؟

الحين راح تشوف وين.

احنا اضفنا الجدول service ولكن اخر شي بالجدول وضعنا ريفرنس او راجع الى جدول الاخر الى هو parents

هذا الكود الى اتكلم عنه من جدول سابق:

Mechanic_ID int REFERENCES Mechanic,
    Veh_ID int REFERENCES vehicle

يعني كل مكانيكي واحد يشتغل في اكثر من صيانة بالسياره

ولكن صيانات سياره يشتغل عليه ميكانيكي واحد.

تمام.

طيب نجي اخر جدولين عباره عن M:M و تم تحويل العلاقه الى M:1 بسبب وضع الجسر بينهم الى هو جدول Inve_serviceOrder ليه؟

لانه عندنا جدولين الى هم Inventory و service_order

  • اكثر من صيانه تحتاج اكثر من اداء او items من المستودعات الى هي Inventory
  • والعكس نفس الشئ اكثر items او اغراض تحتاجها بالصيانات. يعني

العلاقه راح تكون M:M

و راح نضيف جسر بيهم و نسميه Inve_serviceOrder او بالعربي مكان جاهز الاستخدام بدال ماتروح المستودع وتبحث وتضيع.

اول شي خلينا نسوي جدول المستودع

CREATE TABLE Inventory(
    Inv_ID      integer  PRIMARY KEY,
    partName       VARCHAR(20),
    PartDescrip    VARCHAR(500),
    Qty_hand       INT,
    costUnit       int, 
    record_qty    int 
);

هذا جدول يعتبر parent بسبب راح يكون مستودع واحد فقط

يعني بالورشه راح يكون في مستودع واحد وفيه كل الاغراض الى تحتاجها للصيانه تمام!!

و جدول اخر موجود اسمه service_order الى هو صيانه

الان نسوي جدول الاخير الى هو Inve_serviceOrder

يعتبر جسر بينهم و اسميه مكان جاهز الاستخدام الاغراض او اغراض تم تجهيزها الصيانات القادمه

يعني تخيل معاي:

عميل اسمه عبدالعزيز عمل موعد للتغير زيت و فلتر و نوع سياره كامري 2019 اليوم الاحد.

هنا راح يجهزون الاغراض زي فلتر وزيت والخ الى يحتاجونها عشان يصلحون سياره بأسرع وقت و بدون مايضيعون وقت بالبحث…

لهذا سبب نحتاج هذا الجدول:

create TABLE Inve_serviceOrder(
    Inv_ID int REFERENCES Inventory,
    service_id int REFERENCES service_order,
    PRIMARY KEY(Inv_ID,service_id),
    Qty_partused  int,
    labor_hr      int
);

تجاهل الاخطأ بسبب اني نسختها من الدفتر مباشر.

هنا انتهينا من اخر جدول ومثل مانلاحظ تم اضافه الجدول بالنجاح.

والحين صارت كذا:

  • مستودع يحط بالمكان الجاهز اكثر من الغرض او items
  • صيانه تاخذ اكثر من items واحد

وكذا صار m:1 بدال m:m

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

Inv_ID int REFERENCES Inventory,
    service_id int REFERENCES service_order,
    PRIMARY KEY(Inv_ID,service_id),

بحيث نضع primary key تابعه المستودع والصيانه

وبنفس الوقت نحولها Foreign key


في حال انك تبي تتأكد انك اضفت الجداول مع keys بنجاح

تستطيع تشيك من قائمة اسمها Structure اختار اسم الجدول ثم اضغط عليها

مثال بالصوره

لما تلاحظ تحت primary key مضافه شي اخر مثل cust_lname

بسبب اني وضعتها كافريد من نوع Unique

و insert سوف اشرحها الحالها المره قادمه بأذن الله.

هنا انتهينا من بناء قاعده بيانات بنجاح في Phpmyadmin 🙂

اذا عندك استفسار او سؤال اكتب تعليق تحت و ان شاءالله ارد عليك

او تبي ترسلي بالخاص بالتويتر مو مشكلة :).

أشوفكم على خير و الى الدرس الجاي..