نماذج البيانات Data Model تمثيل مجرد (أو توصيف) للبيانات الخاصة بمؤسسة حيث يوضح هذا النموذج الكيانات Entitiesوالحداث Events والنشاطات Activitiesالمرتبطة بهذه المؤسسة .نستطيع القول بأن نموذج البيانات يصف المؤسسة بحد ذاتها ويهدف إلى تمثيل البيانات وجعلها قابلة للفهم بشكل أفضل.
مخطط كيان – ارتباط ER Diagram الوحدات الساسية المكونة لنماذج البيانات: الكيانات :Entities الكيان هو شيء Thingأو غرض Objectذو معنى بالنسبة لعمل المؤسسة ،Businessيمكن توصيفه من خلل مجموعة خصائص(واصفات) .قد تكون الكيانات شخصاً ،بناءً أو نشاطاً (كموعد أو عملية). مثال :الكتاب في المكتبة يمثل كيان له خصائص وميزات. يمثل الكيان في مخططات ERDبمستطيل يحتوي اسم الكيان ،الذي غالباً ما يُكتب بأحرف كبيرة. ENTITY
مخطط كيان – ارتباط ER Diagram الواصفات(الخصائص):Attributes إن عملية وصف الكيان بعد تمييزه تعني تحديد جميع خصائصه التي نريد معرفتها وتخزينها في قاعدة البيانات. مثال: إذا عدنا إلى كيان الكتاب نجد أن خصائصه هي :العنوان ،الرقم ،ISBN الناشر ،المؤلف ،تاريخ النشر ،الخ... (Book )ISBN, Title, Publisher, Author, Publish_Date لحظ أن خصائص الكيان يمكن أن تختلف من تطبيق لخر ،فقد يهتم صاحب مكتبة بالخاصية "عدد الصفحات" ،بينما ل يهتم آخر بهذه المعلومة ،وعندها ل يصبح "عدد الصفحات" أحد الخصائص المطلوبة.
مخطط كيان – ارتباط ER Diagram
أنواع الواصفات:
المفاتيح الرئيسية :تُشير الواصفات إلى المفاتيح الرئيسية في مخططات ERDبوضع خط تحتها الواصفة المركبة :هي الواصفة التي يمكن تقسيمها إلى عدة واصفات أخرى .فعلى سبيل المثال ،يمكن تقسيم واصفة العنوان إلى شارع ،مدينة ،ولية ودولة. الواصفة البسيطة :هي الواصفة التي ل يمكن تقسيمها .مثل العمر ،الحالة الجتماعية وغيرها. الواصفة المشتقة :هي الواصفة التي يتم حساب قيمتها استناداً إلى واصفات أخرى ،بالعتماد على خوارزميات محددة ،بحيث يمكن الستغناء عن تخزينها في قاعدة المعطيات .فعلى سبيل المثال يمكن حساب عمر الموظف اعتمادا على تاريخ ميلده المُخزن في قاعدة المعطيات. وحيدة القيمة :هي الواصفات التي ل يمكن أن تأخذ أكثر من قيمة .فعلى سبيل المثال ،ل يمكن أن يكون للشخص أكثر من رقم هوية وحيد .إل أنها ليست واصفة بسيطة بالضرورة. متعددة القيم :هي الواصفات التي يمكن أن تأخذ عدة قيم .مثل قد يحمل الشخص عدة شهادات أو قد يكون له عدة أرقام هاتف.
مخطط كيان – ارتباط ER Diagram ترميز الواصفات: يرمز للواصفة في مخططات ERبشكل بيضوي. وإذا كانت الواصفة متعددة القيم يرمز لها بشكل بيضوي مزدوج الطار. ويرمز للواصفة المركبة بمجموعة أشكال بيضوية مرتبطة بخطوط ،أو بشكل بيضوي يرتبط مع الكيان بخط مزدوج. يرمز للواصفة المشتقة بشكل بيضوي منقط الطار أو اتصاله مع الكيان يتم بخط منقط. attribute
attribute
attribute
واصفة بسيطة
واصفة متعددة القيم
attribute
attribute attribute واصفة مشتقة
واصفة مركبة
عن تمثيل الكيان والواصفات: مثال
ISBN
Publish_date Book Title
ًيمكن تمثيل هذا الشكل علئقيا : كما يلي
Publisher
Author Book
ISBN
Title
Author
Publisher
Publish_date
1000-13-4
database
--
-----
------
1000-14-5
oracle1
--
------
-----
مخطط كيان – ارتباط ER Diagram العلقات :Relationships تشكل العلقات أو الروابط Association or Linkageبين الكيانات، كأن نقول مثلً " يُكلف مهندسو الشركة بالمشاريع ". لحظ أن الشارة إلى العلقة بين الكيانين مهندس ومشروع تمت باستخدام فعل التكليف. يرمز للعلقة بمعين يوضع ضمنه اسم العلقة ويربط بين الكيانات المرتبطة ببعضها عن طريق هذه العلقة. مهندس
مكلف
مشروع
غالبا العلقة تكون ثنائية(بين كيانين) في قواعد البيانات ول نستخدم علقات ثلثية أو أكثر أما العلقة الحادية فهي للكيان مع نفسه
مخطط كيان – ارتباط ER Diagram يمكن النظر إلى قاعدة البيانات العلئقية على أنها: مجموعة من الكيانات روابط (علقات) بين هذه الكيانات.
مثال للدراسة
تم افتتاح مركز تجاري ( )Mallجديد و يقوم هذا المركز باجتذاب عدد كبير من الزبائن و المتاجر ,و هذا المركز التجاري يعتبر واحد من سلسلة من المراكز التجارية المملوكة من قبل شركة واحدة ( )Parent Companyيحتاج إلى قاعدة بيانات لمتابعة إدارة هذا المركز و ذلك من خلل مراقبة جميع المتاجر و كذلك مالكي هذه المتاجر و العاملين فيها ,قبل أن نبدأ في تصميم قاعدة البيانات لهذا المركز يجب أن تكون الخطوة الولى هي تصميم مخطط كيان -ارتباط لتقديمه إلى صاحب المركز التجاري ,لقد قمنا بجمع المعلومات التالية عن المراكز التجارية و التي سنعتمد عليها في بناء مخطط كيان -ارتباط: يجب أن نقوم بتخزين معلومات عن المركز التجاري و عن كل متجر في المركز يجب أن نخزن اسم المركز التجاري و كذلك عنوانه و يجب أن يتضمن المركز التجاري في أي لحظة متجر واحد أو أكثر. من أجل كل متجر سنقوم بتسجيل المعلومات التالية( :رقم المتجر و الذي يجب أن يكون فريد , اسم المركز موقع المتجر (رقم الغرفة) ,القسام ,مالك المتجر ,و مدير المتجر) يمكن أن يحتوي المتجر على أكثر من قسم و كل قسم مدار من قبل مدير و كل متجر يجب أن يكون له مدير واحد فقط و كل متجر له مالك وحيد فقط و كل متجر موجود في مركز تجاري واحد فقط . يستطيع مدير المتجر أن يدير متجر واحد فقط ,يجب أن نخزن معلومات عن مدير المتجر (السم ,الرقم ( , )SSNالمتجر الذي يديره ,و الراتب). إن مالك المتجر هو شخص ,و يجب أن نسجل معلومات عن مالك المتجر مثل (السم ,الرقم ( , )SSNالعنوان ,و رقم المكتب ) ,يجب أن يكون المالك يملك متجر واحد على القل و يمكن أن يملك أكثر من متجر واحد.
Mall
وتكون قاعدة البيانات العلئقية الموافقة:
أشكال العلقات: علقة واحد لواحد :One-to-One "يجب أن يملك كل موظف حاسوباً وحيداً" .تعبر هذه الجملة عن علقة واحد لواحد بين كيان الموظف وكيان الحاسوب في المؤسسة حيث ل يحق للموظف امتلك أكثر من حاسوب ،ول يمكن أن يكون الحاسوب ملكاً لكثر من موظف .وتُعتبر هذه العلقة من العلقات القليلة الستخدام في نماذج البيانات.
علقة واحد لعدة :One-to-Many "يمكن أن يشرف كل قسم في المؤسسة على أكثر من مشروع ويجب أن يكون كل مشروع تابعاً لقسم واحد على الكثر" ،تعبر هذه الجملة عن علقة واحد لعدة بين المشاريع والقسام في المؤسسة ،حيث تكون العدة Manyمن جهة كيان المشروع، والواحد Oneمن جهة الكيان قسم .نميز في هذا النوع من العلقات بين الكيان الب ( Parentالقسم) والكيان البن ( Childالمشروع).
علقة عدة لعدة :Many-to-Many "يُكلف كل مهندس بعدة مشاريع ويعمل في كل مشروع عدد من المهندسين" .تُعبر هذه الجملة عن علقة عدة لعدة بين المشاريع والمهندسين.
: تمثيل العلقات 1
1
:one-to-one علقة )1:1(
1
M
:one-to-many علقة )M:1(
M
N
:many-to-many علقة )M:N(
تحويل العلقات إلى جداول: :One-to-One من أجل العلقات الثنائية ( )1:1إذا كان كل من الطرفين لهما مشاركة كلية يمكنك اختيار أحد الجدولين ليتضمن المفتاح الرئيسي للجدول الخر كمفتاح أجنبي و كذلك ليتضمن واصفات العلقة إن وجدت
:One-to-Many إذا كان الطرف ( )Mمن العلقة ذو مشاركة كاملة قم بتضمين المفتاح الرئيسي للطرف( )1في جدول الطرف Mكمفتاح أجنبي
:Many-to-Many في هذه الحالة نحول العلقة إلى جدول جديد يحوي المفتاح الرئيسي للجدول الول والمفتاح الرئيسي للجدول الثاني ويمكن إضافة حقول أخرى إذا أردنا.
إشكاليات قاعدة البيانات ذات التصميم السيئ
إشكالية الدخال :إدخال بيانات لبعض حقول الجدول يجعل المفتاح الرئيسي يأخذ القيمة nullوبالتالي انتهاك قيد إشكالية الحذف :حذف سطر معين قد يؤثر على صحة البيانات الحقيقية(قاعدة بيانات غير موثوقة) إشكالية التعديل :تعديل معلومة معينة تحتاج لتعديل عدد كبير من أسطر قاعدة البيانات (بطء)
تنظيم قاعدة البيانات التنظيم هو عملية ترتيب وتوزيع جداول قاعدة المعطيات العلئقية ،للتقليل من تكرار المعطيات وتقليص حجم التخزين المطلوب ولحل إشكاليات الدخال والحذف والتعديل مع المحافظة على تكامل البيانات. مستويات التنظيم الساسية هي ثلث (الشكل النظامي الول ،1NFالشكل النظامي الثاني ،2NFالشكل النظامي الثالث ،)3NFويقصد عادة بتنظيم القاعدة وضعها في الشكل النظامي الثالث.
تنظيم قاعدة البيانات
الشكل النظامي الول (:)1NF
يقال عن جدول في قاعدة البيانات أنه من الشكل النظامي الول إذا كان تقاطع كل سطر وعمود فيه (أي الخليا) ،يتضمن قيمة وحيدة غير قابلة للتجزئة. الخطوات التي يتكون منها الشكل النظامي الول:
إزالة المجموعات المكررة :تبدأ هذه المرحلة من خلل عرض المعطيات ضمن جدول بحيث تتكون كل خلية فيه من قيمة وحيدة ول توجد هناك أية مجموعات مكررة .يتم إزالة المجموعات المكررة من خلل إزالة كافة القيم الفارغة ()NULL والتأكد من أن كافة الواصفات تحتوي على قيم مناسبة. تعريف المفتاح الرئيسي. تعريف كافة التبعيات.
وبتطبيق معيار 1NFعلى الجدول السابق يصبح بالشكل:
وضع الجدول في الشكل النظامي الول ل يحل مشاكل التصميم السيئ إنما هو خطوة في طريق حلها ،فبالرغم من وضع جدول إيجار العقارات في الشكل النظامي الول فإنه ل يزال يعاني من مشكلة تكرار البيانات ،وإشكاليات الضافة والتعديل والحذف.
تنظيم قاعدة البيانات
الشكل النظامي الثاني :2NF يقال عن جدول أنه من الشكل النظامي الثاني إذا حقق ما يلي:
هو من الشكل النظامي الول. كل الواصفات التي ل تشكل جزءاً من المفتاح الساسي ،تعتمد وظيفياً وبشكل كلي على المفتاح الساسي.
الخطوات التي يتكون منها الشكل النظامي الثاني:
تعريف كافة مكونات المفاتيح :ينبغي أولً كتابة كل جزء من المفتاح الرئيسي (المركب) على حدة ثم كتابة المفتاح ككل على سطر آخر .و بعد ذلك سيتم اعتبار كل سطر مما سبق مفتاح رئيسي في جدول خاص. تعريف الواصفات ذات التبعيات:
تعتمد الواصفة Bعلى الواصفة Aوظيفياً إذا كانت كل قيمة لـ Aتقابلها قيمة وحيدة لـ ،Bفمثلً C_id → c_name P_num → p_address, owner_num, owner
تنظيم قاعدة البيانات
يبدأ وضع الجداول في الشكل النظامي الثاني بتحديد جميع علقات التبعية بين الواصفات ،ومن ثم تجزيء الجداول ( ،)decompositionوهي تضمن اعتماد جميع الواصفات التي ل تشكل جزءاً من المفتاح الساسي كلياً وبشكل مباشر على المفتاح الساسي. من التعريف السابق نستنتج أن جميع الجداول ذات المفتاح البسيط (غير المركب) والتي تخضع لمعيار 1NFهي حتماً من الشكل النظامي الثاني.
C_id + p_num → r_start, r_end. C_id → c_name. P_num → p_address, rent, owner_num, owner. Owner_num → owner.
تنظيم قاعدة البيانات
الشكل النظامي الثالث :3NF
يكون الجدول من الشكل النظامي الثالث إذا حقق ما يلي: من الشكل النظامي الثاني. ل توجد فيه واصفات ل تشكل جزءاً من المفتاح الساسي وتعتمد بالتعدّي على المفتاح الساسي الجداول Rentalو Customerل تحوي واصفات تعتمد بالتعدي على المفتاح الساسي، بينما الواصفة ownerفي الجدول Propertyيعتمد على owner_numالذي بدوره يعتمد على P_numولوضع هذا الجدول في الشكل النظامي الثالث يجب تجزيئه إلى الجدولين التاليين:
DDL تعليمات :تعليمة إنشاء جدول
Create Table tab-name )
col-name1 data-type [default-value] [not null] [,col-name2 data-type [default-value] [not null], --] [ [CONSTRAINT constraint-name ] PRIMARY KEY ) col1, col2, ... ( , FOREIGN KEY ) col1, col2, ... ( REFERENCES f-table [ ) col1, col2, ... ( ] , UNIQUE ) col1, col2, ... ( ] (; وتعني نمط البيانات مثل:Data-type char,varchar,varchar2,number,date,blob,clob .نكتبها عندما نريد وضع قيمة افتراضية للحقل:Default-value :وتعني تعريف قيد على حقل أو أكثر ضمن الجدول والقيود هي:Constraint Primary key, Foreign key, Unique
تعليمة إنشاء جدول
ملحظات حول إنشاء جداول:
يجب أن يبدأ السم بمحرف أن ل يكون السم أطول من 30محرف. ل يجب أن يكون اسم الجدول من الكلمات المحجوزة في أوراكل. يجب أن يكون اسم الجدول فريداً (لم يستخدم من قبل ضمن قاعدة البيانات) مثال :أنشئ جدول للموظفين يحوي رقم الموظف emp-idواسمه emp-name ورقم هاتفه phoneبحيث رقم الموظف مفتاح أساسي: Create table employee )emp-id varchar)10( not null, empname varchar)30( not null, phone varchar2)10(, ;((constraint pk primary key )emp-id أنشئ جدول بالسم loanويحوي على البيانات :رقم القرض ,l-numالمبلغ , amountتاريخ البدء , s-dateتاريخ النتهاء, e-dateرقم الموظف empnoعلى أن يكون رقم القرض مفتاح أساسي ورقم الموظف مفتاح خارجي للجدول emp
حل التمرين create table loan )l_num varchar2)20( not null, amount varchar2)20( not null, s_date date, e_date date,empno number not null, constraint pk_loan primary key )l_num(, constraint fk_loan foreign key)empno( REFERENCES emp )empno( (
إنشاء جدول بالعتماد على جدل موجود مسبقًا
Create table tab-name )col1,col2,col3,----( AS SQL query ; : مثال Create
table new-emp )id, name, salary( as select empno, ename, sal*12 annual from emp where deptno=20;
Alter تعديل جدول يتم تعديل جدول بإضافة عمود جديد أو تعديل نمط بيانات حقل من الجدول أو تعديل حجمه أو إلغاء تفعيل) قيد أو تحرير العمدة غير المستخدمة/إضافة) قيد أو (تفعيل/حذف حقل أو (حذف :في جدول Alter table tab-name Add )col-name type [default-value] [not null],----(; Alter table tab-name modify )col-name new-type(; Alter table tab-name drop col-name; Alter table tab-name drop unused columns; Alter table tab-name add constraint cons-name primary key )col-name(; Alter table tab-name drop constraint-name cascade; Alter table tab-name disable/enable constraint cons-name cascade;