elsayed24

العلاقات بين جداول قاعدة البيانات SQL Server

16 ردود في هذا الموضوع

اعزائي شكرا لسعة صدركم

كيف يتم عمل العلاقات بين الجداول في قاعدة البيانات ( عن طريقEnterprise Manager ؟)وبالاكواد ان امكن وبالشرح

جزاكم الله خيرا على كل جهوكم ودعمكم

وبالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمه الله وبركاته

كيف يتم عمل العلاقات بين الجداول في قاعدة البيانات ( عن طريقEnterprise Manager ؟)

هذا المرفق به شرح عن طريقEnterprise Manager اتمنى ان يساعدك

ولأن المرفق كبير فسوف اجعله على اجزاء

هذا هو الجزء الأول

Relation_Ship_between_two_tables_1.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اتمنى لو تكمل لنا تكوين الروابط من خلال ال T-SQL :rolleyes:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
اتمنى لو تكمل لنا تكوين الروابط من خلال ال T-SQL  :rolleyes:

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

الله الموفق وهو من وراء القصد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمه الله وبركاته

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

اختكم enjy

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمه الله وبركاته

معلومة انا لا أجيد الشرح ولكن سأحاول واعاننى الله

سوف ابدأ بإذن الله ان اشرح ما تريده بالكود والله المعين

لكى نبدأ بعمل العلاقات بين الجداول في قاعدة البيانات

هناك ما يسمى بالconstraints "شروط للتعامل مع الجداول" وهى عبارة عن:

1) Primary key constraint

2) Foreign key constraint

3) Unique constraint

4) Default constraint

5) Check constraint

ويمكن إضافة هذة الconstraints من خلال:

1) Create table

2) Alter table

أولا من خلال Create table

مثال:إنشاء جدول بالconstraint

create table emp
(id int IDENTITY(1,1) not null
,(name nvarchar(50
,lastname nvarchar(50)
,city nvarchar(20)
,tel int
,constraint pk_id primary key (id)
,constraint df_city default("Egypt"))

الcolumn الذى به primary key يكون مرتب ترتيبا تنازليا

ثانيا من خلال Alter table

مثال:إنشاء جدول بدون الconstraint

create table emp2
(id int not null,
hiredate datetime,
salary decimal,)

alter table emp2
constraint fk_id foreign key (id) referance emp(id))

الشرح:

بالنسبة لأولا هو جدول للموظفين للبيانات الشخصية للموظف (كمثال) بجملة الcreate واضفت بها primary key وهو يعتبر مفتاح اساسى يمكن من خلاله ربط اكثر من جدول بهذا الجدول (كأنه الparent)

واضفت default constraint لمجرد مساعدة من يدخل بيانات الموظفين انه اذا لم يدخل اسم البلد فسوف تكون البلد هى المذكورة في الdefault constraint

ملحوظة: في id وضعت identity(1,1) وهذا معناه انه لا يمكن ان يتكرر id للموظف و(1,1) هى يبدأ الترقيم برقم 1 ويزيد ب 1 ولا يمكن للشخص الذى يدخل البيانات ان يغيير الid.

بالنسبة لثانيا هو جدول للموظفين للمرتب وتاريخ التعيين (كمثال) بجملة create

ثم قمت بربط الجدولين(emp - emp2) عن طريق ال id للموظف

فأضفت foreign key (كأنه child) وبالتالى لن يمكننا عن طريق هذه العلاقة ان نضع أى قيمة في id للجدول emp2 غير موجودة في الid للجدول emp2

اتمنى ان اكون قد اوصلت جزء من المعلومات المطلوبة

وان شاء الله سوف استكمل مرة اخرى

اختكم enjy

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

alter table emp2
constraint fk_id foreign key (id) referance emp(id))

انا اسفه فإنى نسيت ان اضع add في هذا الكود

alter table emp2
add constraint fk_id foreign key (id) referance emp(id))

كلمة add هنا لأننا نعدل في الجدول ولم تكن موجودة في المثال الأول

كلمة alter تستخدم لتعديل الجداول

constraint fk_id foreign key (id)

هنا id فى جدول الemp2

تم تعديل بواسطه طارق إبراهيم
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ما شاء الله

ده النشاط و التفاعل صحيح

شكراً enjyshahin على المجهود الطيب

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمه الله وبركاته

يمكننا عمل علاقات بين الجداول عن طريق جملة الselect

Combining Data from Multiple Tables

أولا بأستخدام : Inner Join

SELECT Employees.Name, Orders.Product
FROM Employees
INNER JOIN Orders
ON Employees.Employee_ID=Orders.Employee_ID

في هذة الحالة الinner join يعرض البيانات المشتركة فقط بين جدول Employees و جدول Orders

ويكون الناتج :

Name                    Product

Hansen, Ola                    Printer

Svendson, Stephen          Table

Svendson, Stephen          Chair

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أنا اسفة على هذا الإنقطاع المفاجئ وان شاء الله سأكمل قريبا جدا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمه الله وبركاته

سوف احاول ان ارسل على فترات فانا اسفة على هذا

نستكمل ما بدأناه

ثانيا بإيتخدام : Left Join

SELECT Employees.Name, Orders.Product
FROM Employees
LEFT JOIN Orders
ON Employees.Employee_ID=Orders.Employee_ID

في هذة الحالة الleft join يعرض بيانات جدول Employees حتى لو كانت غير موجودة في جدول Orders أى بيانات الجول الذى على يسار كلمة join أو بمعنى أخر الجدول الأول

ويكون الناتج:

Name                                    Product

Hansen, Ola                                  Printer

                                        Svendson, Tove                                         

Svendson, Stephen                        Table

Svendson, Stephen                        Chair

                          Pettersen, Kari

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ثانيا بإيتخدام : Right Join

SELECT Employees.Name, Orders.Product
FROM Employees
RIGHT JOIN Orders
ON Employees.Employee_ID=Orders.Employee_ID

في هذة الحالة الright join يعرض بيانات جدول Orders حتى لو كانت غير موجودة في جدول Employees أى بيانات الجدول الذى على يسار كلمة join أو بمعنى أخر الجدول الثانى

ويكون الناتج:

Name                Product

Hansen, Ola                Printer

Svendson, Stephen                Table

Svendson, Stephen                Chair

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الشكر الجزيل للأخت enjyshahin على شرحها للjoins وربط الجداول

علماً بأننا قد شرحنا الjoins من قبل على هذا الرابط:

ما هى الـ joins ؟ و ما انواعها و فيما تستخدم ؟

:)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

رابعا بإستخدام :Cross Join

SELECT au_fname, au_lname, pub_name
FROM authors CROSS JOIN publishers
ORDER BY au_lname DESC

في هذه الحالة يعرض الcross join البيانات كالتالى

جدول authors به 23 rows و جدول الpublishers به 8 rows

وسيكون الناتج عبارة عن 23 مضروبا في 8 يساوى 184 rows

جربها واتمنى ان يكون به إفاده

وان شاء الله سأكمل في وقت لاحق

وشكرا أختكم enjy

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .