Essam بتاريخ: 25 فبراير 2004 تقديم بلاغ مشاركة بتاريخ: 25 فبراير 2004 (معدل) في البداية احب ان اهنى الجميع بهذا الحس العالي بالمسؤولية..المشكلة كالتالي:الموظف يمكن ان يتكلم اكثر من واللغة يمكن ان يتحدث بها اكثر من موظف(many to many)....اي لدينا جدول للموظفين وليكن التالي: create table info(id number(5), lang_id number(1), constraint info_id_pk primary key(id)); و جدول اللغات كالتالي: create table lang(lang_id number(1), language varchar2(15), constraint lang_lang_id_pk primary key (lang_id)); لسؤال هو كالتالي :كيف يتم حل هذه المشكلة على صعيد ال SQL؟كيف يتم حل هذه المشكلة على صعيد ال FORM؟لقد قمت بانشاء جدول ثالث لفك العلاقة كالتالي: create table int(id number(5), lang_id number(1), constraint int_lang_id_fk foreign key(lang_id) references lang(lang_id)); فهل هذا صحيح؟و هل يجب اضافة TRIGGERS؟وما هو الITEM التي سنستخدمها في ال FORM لاظهار حقل اللغات؟و شكرا للجميع... تم تعديل 25 فبراير 2004 بواسطة Oracle اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
khaled بتاريخ: 26 فبراير 2004 تقديم بلاغ مشاركة بتاريخ: 26 فبراير 2004 اخي عصام في حال ان تكون معك meny to meny اكيد انته تحتاج الى جدول ثالث وسيط .جدول الموظفين : create table emp(emp_id number(5), emp_name varchar2(20), constraint info_id_pk primary key(emp_id)); جدول اللغات: create table lang(lang_id number(1), language varchar2(15), constraint lang_lang_id_pk primary key (lang_id)); الان الجدول الوسيط : create table emp_lang ( emp_id number(5) constraint fk_emp_lang_emp_id references emp(emp_id) ,lang_id number(1) constraint fk_emp_lang_lang_id references lang(lang_id) ,constraint pk_emp_lang_emp_id_lang_id primary key (emp_id,lang_id) ); في الجدول الوسيط يمكنك ان تحدد العلاقة بين الجدولين , وفي جدول الوسيط سوف يكون معك فقط ارقام اي رقم الموظف وارقام اللغات التي يجيدها .وفي الفورم ربما لا تحتاج ان تظهر الاسما مع الارقام , وهنا تحتاج لعمل 2 functions واحدة لارجاع الاسم واخرى لارجاع اللغة , ثم قم بعمل 2 display items وحد لعرض الاسم واخر لعرض اللغة . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
John بتاريخ: 26 فبراير 2004 تقديم بلاغ مشاركة بتاريخ: 26 فبراير 2004 الله يفتح عليك و على مشاركاتك و مجهودكربنا يوفقك أخ خالد اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Essam بتاريخ: 26 فبراير 2004 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 26 فبراير 2004 شكرا جزيلا للمشاركين..اتصور ان المشكلة على المستوى التصميمي(sql) قد تم حلها ,الا ان المعضلة تكمن في التطبيق(forms),أي:لدينا اسم الموظف ولبكن ( x ومن نوع item text)و اسماء اللغات و لتكن (من نوع list item مثلا سيتم توليدها من جدول lang)فكيف سنتعامل مع حقل اللغات في حال اردنا اختيار(ادخال) لغتين للموظف xوايضا في حالة الاظهار(الاستعلام)... اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
khaled بتاريخ: 26 فبراير 2004 تقديم بلاغ مشاركة بتاريخ: 26 فبراير 2004 في الفورم اعمل بلك للجدول الوسيط وليكن tabular styleلربط الموظف رقم 1 باكثر من لغةادخل في السجل الاول رقم الموظف 1 ثم اللغة وفي السجل الثاني ايضاً رقم 1 ثم لغة اخرىوهكذا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Essam بتاريخ: 2 مارس 2004 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 2 مارس 2004 اعتذر عن التاخير,لانشغالي الكبير,هنا form بسيط يوضح الحل , و ذلك اعتمادا على كود الاخ خالد مع تعديل بسيط, كالتالي: create table emp1(emp_id number(5), emp_name varchar2(20), constraint info_id_pk primary key(emp_id)); جدول اللغات: create table lang(lang_id number(1), language varchar2(15), constraint lang_lang_id_pk primary key (lang_id)); الان الجدول الوسيط : create table emp_lang ( emp_id number(5) constraint fk_emp_lang_emp_id references emp1(emp_id) ,lang_id number(1) constraint fk_emp_lang_lang_id references lang(lang_id) ,constraint pk_emp_lang_emp_id_lang_id primary key (emp_id,lang_id) ); insert into lang values(1,'الروسية'); insert into lang values(2,'الانجليزية'); insert into lang values(3,'الالمانية'); insert into lang values(4,'الرومانية'); insert into lang values(5,'التشيكية'); insert into lang values(6,'الفرنسية'); insert into lang values(7,'الهندية'); commit; ;و الفورم: lang.zip اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.