النافذة العربية للبرمجة

النافذة العربية للبرمجة
 
الرئيسيةالمشاركاتمكتبة الصورس .و .جبحـثالأعضاءالمجموعاتالتسجيلدخول

شاطر | 
 

 الدرس الثاني طريقة إنشاء جداول مع المحددات

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
عبدالهادي الحداد
مدير الموقع
avatar

عدد الرسائل : 483
العمر : 32
الموقع : اليمن الحبيبة
العمل/الترفيه : طالب برمجة
تاريخ التسجيل : 13/06/2008

بطاقة الشخصية
المدير العام / عبدالهادي الحداد:

مُساهمةموضوع: الدرس الثاني طريقة إنشاء جداول مع المحددات   الأربعاء يونيو 18, 2008 11:51 am

بسم الله الرحمن الرحيم
الدرس الثاني
في هذا الدرس سنتناول ان شاء الله طرق انشاء الجداول وطرق الربط بين هذه الجداول وتعرف المحددات

فعند القيام بعمل انشاء للجدول نستخدم الامر
CREATE TABLE ويعني انشأ الجدول وبهذا نهئ قاعدة البيانات الى انشاء الجدول وبعد ذلك يجب وضع اسم الجدول فنقول CREATE TABLE STUDENTS مثلا ونضع بعدها قوس ليشمل عدد الحقول الى هذا الجدول وينصح دائما بعمل باتخاذ اول ثلاثة حروف من اسم الجدول عند تسمية اي حقل تابع لهذا الجدول والهدف هو معرفة ان هذا الحقل تابع للجدول الفلاني ويبقى ان نحدد نوع الحقل او مايسمى ب DATATYPE وسوف نتناول ثلاثة انواع هي
1-VARCHAR2 وهي تأخذ ارقام وحروف في الحقل ويجب تحديد طول الحقل ونقصد بطول الحقل هو عدد الاحرف في هذا الحقل فنقول
VARCHAR2(20) من هذا التعريف نرى ان طول الحقل 20 حرف

2- NUMBER وهي تأخذ ارقام سواء كانت ارقام عادية او ارقام عشرية ويجب ايضا تحديد طول الحقل فيه وهي عدد الخانات فنقول NUMBER(4) ويعني رقم مكون من اربع خانات كالتالي 1234

3- DATE وهو التاريخ كما هو معروف
اذا القاعدة لانشاء الجدول هي

[[quote]quote]
الكود:
CODE
CREATE TABLE table_name
(column1 datatype ,
column2 datatype ,
..[/quote])
[/quote
]
ناخذ الآن نبذه عن طريقة ربط الجداول بعد ان تعرفنا على طريقة انشاءها وانا اتطرق الى رؤوس اقلام وليس بشكل تفصيلي والهدف هو فهم ما يجري قبل الخوض في ادق التفاصيل
ولربط الجداول نستخدم المحددات او ما يسمى ب CONSTRAINTS طبعا المحددات انواع واشكال سوف نطرق الى ما يلزمنا وهو ال PRIMARY KEY وهو المفتاح الاساسي وهو عبارة عن حقل وحيد يتم تحديده بالجدول وهذا الحقل نقوم بتعيينه بهدف عدم تكرار البيانات وهو لا يأخذ قيمة فارغة وانما يأخذ مجموعة وكذلك يمكن تحديد اكثر من حقل في الجدول لتعينهم على انهم لا يتكررون ولكن كوحدة واحدة وعموما الجدول دائما يحتوي على PRIMARY KEY واحد
وطريقة انشاءه تتم بالشكل التالي
CONSTRAINT وتعني محدد وهنا نهئ الجدول الي وجود محدد ونذكر اسمه ثم نذكر نوعه وماهي الحقول التي تريد تحديدها مع الاخذ بعين الاعتبار ان هذه الحقول لايمكن ان تتكرر ولنوضح شيئا مهما اننا لو حددنا مثلا رقم الموظف وتاريخ ميلاده مثلا على انها مفتاح اساسي فهنا نلاحظ شيئا
لو ادخلنا رقم الموظف مثلا E00001 وتاريخ الميلاد 01-01-1970
وادخلنا رقم الموظف مثلا E00001 وتاريخ الميلاد 01-01-1971
هل يا ترى سوف تقبل قاعدة البيانات هذه العملية الجواب نعم والسبب انك حددت في المفتاح الاساسي ان رقم الموظف وتاريخ ميلاده هما وحده واحد ويمنع التكرار في حالة تشابهما لذلك يجب ان نكون حذرين في حالة تحديد المفتاح الاساسي

CODE
CONSTRAINT constraint_name PRIMARY KEY (column1, column2, . column_n)


اما النوع الثاني فهو FOREIGN KEY وهو مفتاح المرجع
وهذا النوع فقط تحدد ان الحقل الذي بجدول الاول تابع للحقل الاساسي في الجدول الثاني
ولتوضيح اكثر مثلا رقم الجنسية في جدول الموظفين تابع رقم الجنسية في جدول الجنسيات لذلك والفروض ان يكون اساسي والهدف من هذا كله هو الزام المستخدم بادخال ارقام او بيانات محدده وتفادي ادخال بيانات غير موجود وتصبح بياناتك اقوى وبرنامجك اقوى
مع ملاحظة انه عند انشاء هذا النوع من المحددات يجب ان يكون الجدول المنشأ موجود على قاعدة البيانات مثلا عند نريد ربط رقم الجنسية بجدول الموظفين برقم الجنسية بجدول الجنسيات يجب ان يكون جدول الجنسيات منشأ قبل جدول الموظفين وهكذا ويمكن الرجوع الى اكثر من حقل في كلا الجدولين وكذلك يجب ان يكون من نفس النوع

وسوف نوضح طريقة افضل لتفادي هذه الاشياء ان شاء الله
وطريقة انشاءه تتم بوضع CONSTRAINT CONSTRAINT_NAME FOREIGN KEY (column1, column2, ... column_n)هنا نحدد اسماء الحقول في الجدول الحالي
REFERENCES parent_table (column1, column2, ... column_n)وهنا نحدد اسماء الحقول مع ذكر اسم الجدول المراد الرجوع اليه
وتكون القاعدة بالشكل التالي

CODE
CONSTRAINT fk_column
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n)
);

نأتي الى انشاء الجداول


جدول الجنسيات وهو يتكون من
1- رقم الجنسية 2- وصف الجنسية 3-تاريخ الانشاء 4- اسم المستخدم

جدول الادارات وهو يتكون من
1- رقم لاادارة 2- اسم الادارة 3-تاريخ الانشاء 4- اسم المستخدم

جدول الموظفين وهو يتكون من
1- رقم الموظف 2- اسم الموظف 3- تاريخ الميلاد 4- الجنس 5- الجنسية 6- تاريخ التعيين 6-الراتب الاساسي 7-بدلات الاخرى 8-1لادارة التابع لها 9-تاريخ الانشاء 10-اسم المستخدم

جدول الجنسيات

CODE
CREATE TABLE NATIONALITY(
NAT_NO VARCHAR2(5),
NAT_NAME VARCHAR2(20),
NAT_CRE_DATE DATE,
NAT_CRE_NAME VARCHAR2(50),
CONSTRAINT NAT_PK PRIMARY KEY(NAT_NO)
)
/


اما بالنسبة الى NAT_CRE_DATE , فهي تفيد في حالة تاريخ انشاء الحقل
اما NAT_CRE_NAME فتفيد باضافة اسم المستخدم الذي قام بانشاء هذا الحقل

جدول الادارات

CODE
CREATE TABLE DEPARTMENTS(
DPT_NO VARCHAR2(5),
DPT_NAME VARCHAR2(20),
DPT_CRE_DATE DATE,
DPT_CRE_NAME VARCHAR2(50),
CONSTRAINT DPT_NO_PK PRIMARY KEY(DPT_NO)
)
/

جدول الموظفين

CODE
CREATE TABLE EMPLOYEES(
EMP_ID VARCHAR2(10),
EMP_NAME VARCHAR2(50),
EMP_BIRTH_DATE DATE,
EMP_SEX VARCHAR2(1),
NAT_NO VARCHAR2(5),
EMP_HIRE_DATE DATE,
EMP_BASIC_SALARY NUMBER(4),
EMP_ADD_EXCHANGE NUMBER(4),
DPT_NO VARCHAR2(5),
EMP_CRE_DATE DATE,
EMP_CRE_NAME VARCHAR2(20),
CONSTRAINT EMP_ID_PK PRIMARY KEY(EMP_ID),
CONSTRAINT NAT_NO_FK FOREIGN KEY (NAT_NO) REFERENCES NATIONALITY (NAT_NO),
CONSTRAINT DPT_NO_FK FOREIGN KEY (DPT_NO) REFERENCES DEPARTMENTS (DPT_NO)
)
/
لا حظوا معي NAT_NO وهو رقم الجنسية وضعته باسم مختلف لأنه تابع لجدول اساسي
وهو جدول الجنسيات وكذلك الحا بالنسبة ل DPT_NO وهو يرمز الى رقم الادارة
اما بالنسبة الى EMP_CRE_DATE , فهي تفيد في حالة تاريخ انشاء الحقل
اما EMP_CRE_NAME فتفيد باضافة اسم المستخدم الذي قام بانشاء هذا الحقل
طبعا يجب الاخذ بعين الاعتبار اننا عندما نريد ان ان نربط حقل في جدول معين بحقل اخر فيجب ان يكون من نفس النوع


لعرض محتويات الجدول الذي قمت بانشائه استخدم الامر DESCRIBE YOUR_TABLENAME وهو امر يقوم بعرض الحقول التي بالجدول ونوع كل حقل وسوف تلاحظ هذه القيمة NOT NULL اي انه لايقبل قيمة فارغة وهو المفتاح الاساسي الذي قمنا بتحديده سابقا ويمكن كتابته بالاختصار DESC EMPLOYEES وسوف يعرض يالشكل التالي
SQL> DESCRIBE EMPLOYEES

CODE

NAME NULL? TYPE
------------------------------- -------- ----
EMP_ID NOT NULL VARCHAR2(10)
EMP_NAME VARCHAR2(50)
EMP_BIRTH_DATE DATE
EMP_SEX VARCHAR2(1)
NAT_NO VARCHAR2(5)
EMP_HIRE_DATE DATE
EMP_BASIC_SALARY NUMBER(4)
EMP_ADD_EXCHANGE NUMBER(4)
DPT_NO VARCHAR2(5)
EMP_CRE_DATE DATE
EMP_CRE_NAME VARCHAR2(20)
وهنا تم انشاء وربط الجداول مع بعضها


الاسئلة
1-بين كيف يتم انشاء جدول للطلاب مكون من ثلاثة حقول حيث يقبل رقم الطالب احرف وارقام وطوله 5 واسم الطالب يقبل احرف وارقام ومكون من 20 حرف وتاريخ ميلاد الطالب

2- ما المقصود بالمحددات التالية أ- المفتاح الاساسي PRIMARY KEY ب-المفتاح المرجعي FOREIGN KEY
3- بيّن بمثال كيف يتم ربط جدولين ببعضهما باستخدام ال FOREIGN KEY

4-اجب بنعم او لا مع ذكر السبب ،يوجد لدينا جدول مكون من حقلين اساسيين PRIMARY KEY ولنفرض انهما رقم الموظف ورقم ادارته فهل تقبل قاعدة البيانات الاضافة لو قمنا باضاف البيان
رقم الموظف = e0001 و رقم الادارة = 10 واضافة رقم الموظف= e0002 ورقم الادارة= 10
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://awfm.boardlog.com
محترف
مبرمج رائع
مبرمج رائع
avatar

عدد الرسائل : 144
العمر : 31
تاريخ التسجيل : 22/07/2008

بطاقة الشخصية
المدير العام / عبدالهادي الحداد:

مُساهمةموضوع: رد: الدرس الثاني طريقة إنشاء جداول مع المحددات   الثلاثاء أغسطس 12, 2008 6:00 am

مشكوووووووووور يلغالي على هذا الموضوع الحلو الممتاز ونتم نى المزيد من المواضيع
lol!
lol!lol!
lol!lol!lol!
lol!lol!lol!lol!
lol!lol!lol!lol!lol!
lol!lol!lol!lol!lol!lol!
lol!lol!lol!lol!lol!lol!lol!
lol!lol!lol!lol!lol!lol!lol!
lol!lol!lol!lol!lol!lol!
lol!lol!lol!lol!lol!lol!
lol!lol!lol!lol!lol!
lol!lol!lol!lol!
lol!lol!lol!lol!lol!lol!
lol!lol!lol!lol!lol!lol!lol!
lol!lol!lol!lol!lol!lol!lol!lol!lol!
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
ذوق اليمن
عضو فعال


عدد الرسائل : 103
العمر : 32
تاريخ التسجيل : 10/07/2008

بطاقة الشخصية
المدير العام / عبدالهادي الحداد:

مُساهمةموضوع: رد: الدرس الثاني طريقة إنشاء جداول مع المحددات   الثلاثاء أغسطس 12, 2008 8:43 am

[center][b]مشكوووووووووووووووووووووور

bounce
bouncebounce
bouncebouncebounce
bouncebouncebouncebounce
bouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebounce
bounce
bounce
bouncebounce
bouncebouncebounce
bouncebouncebouncebounce
bouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebouncebounce
bounce
bouncebounce
bouncebouncebounce
bouncebouncebouncebounce
bouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebounce
bouncebouncebouncebounce
bouncebouncebounce
bouncebounce
bounce

bouncebouncebouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebounce
bouncebouncebouncebounce
bouncebouncebounce
bouncebounce
bounce

bouncebounce
bouncebouncebounce
bouncebouncebouncebounce
bouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebounce
bouncebouncebouncebounce
bouncebouncebounce
bouncebounce
bounce
bouncebouncebouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebouncebounce
bouncebouncebouncebouncebounce
bouncebouncebouncebounce
bouncebouncebounce
bouncebounce
bounce

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

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