الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

مطلوب توضيح هذه العلاقات

Featured Replies

بتاريخ:

السلام عليكم إخواني الأفاضل
137651232.jpg
لو سمحتم دي اسكيمة ال hr أريد توضيح بالتحديد العلاقات مابين جدولي الموظفين والاقسام حيث من خلال الصورة تلاحظوا ان هناك 2 علاقة بين الجدولين لماذا؟؟؟
2-ليه في علاقة بين جدول الemployees and job_history أم أن هذا الجدول الفايدة منه تكسير علاقة ال many to many بين الاقسام والموظفين

ياريت يتم توضيح هذه النقاط
وشكرا كثيرا لكم

بتاريخ:

العلاقة بين جدول الموظفين والدوائر هي one to many
يعني دائرة واحدة لكل موظف ودائرة واحدة تحتوي اكثر من موظف
اما جدول الموظفين مع جدول التاريخ الوظيفي فهي ان الموظف الواحد له اكثر من سجل تاريخي وظيفي
اتمنى ان تكون وصلت الفكرة

بتاريخ:
  • كاتب الموضوع

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

ياريت حد يشرح لنا دي مع مزيد من التوضيح للعلاقات بين 3 جداول الاقسام -الموظفين -المشوار او التاريخ الوظيفي

شكرا كثيرا لكم

بتاريخ:

السلام عليكم ورحمة الله

توجد علاقتين بين جدولي الموظفين وجدول الادارات
العلاقة الاولى : هى عمل الموظف فى ادارة

- الموظف يعمل فى ادارة واحدة فقط .
- الموظف يمكن ان لا توجد له ادارة .... حسب الموجود بالرسم (يمكن can be) وليس (يجب must)
- الادارة الواحدة يمكن ان يعمل بها موظف واحد أو أكثر .
- الادارة يمكن الا يوجد لها موظفين .

العلاقة الثانية : هى عن الموظف المدير للادارة ( Manager_id in departments table )
- الادارة يكون لها مدير واحد فقط .
- الادارة يمكن ان لا يكون لها مدير .
- الموظف يمكن ان يكون مدير لإدارة واحدة أو أكثر .

العلاقة بين جدولي الموظفين وجدول السجل التاريخي للموظف
- الموظف يكون له سجل وظيفى تاريخي واحد أو أكثر .
- السجل التاريخى يجب ان يكون مرتبط بموظف .

الرموز المستخدمة فى العلاقات
0 يعنى اختياري
1 علاقة احادية = one
* علاقة كثير = many

بتاريخ:
  • كاتب الموضوع

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

بتاريخ:

السلام عليكم ورحمة الله

لا يمكن الغاء اي من العلاقتين السابقتين كما هو مطلوب فى متطلبات التحليل فى المثال السابق
فالعلاقة الاولى : عن عمل الموظف فى ادارة معينه
والعلاقة الثانية : عن المدير أو الرئيس المحدد للادارة

business rules
-ليس كل الموظفين رؤساء لإدارات .
- الادارة يمكن الا يكون لها رئيس .
-ولكن كل الرؤساء موظفين . ( recursive relation in employee table )
-وكل موظف يجب ان يحدد له ادارة معينه يعمل بها .
-والموظف يمكن ان يكون رئيس لأكثر من ادارة .

الER السابقة تعتبر من الامثلة الجيده فى دراسة العلاقات بين الكائنات entity relationship

تم انشاء جزء من الجداول السابقة للايضاح

create table departments  (
  department_id      NUMBER(3)                       not null,
  manager_id         NUMBER(5),
  department_name    VARCHAR2(30),
  constraint PK_DEPARTMENTS primary key (department_id)
);

create table employees  (
  employee_id        NUMBER(5)                       not null,
  department_id      NUMBER(3),
  first_name         VARCHAR2(15),
  last_name          VARCHAR2(15),
  constraint PK_EMPLOYEES primary key (employee_id)
);

alter table departments
  add constraint FK_DEPARTME_REFERENCE_EMPLOYEE foreign key (manager_id)
     references employees (employee_id);

alter table employees
  add constraint FK_EMPLOYEE_REFERENCE_DEPARTME foreign key (department_id)
     references departments (department_id);



- ادخال بيانات الادارات بدون رؤساء ( لم يتم ادخال بيانات بعد فى جدول الموظفين )

SQL> insert into departments values ( 10 ,null,'Computer') ;

1 row created.

SQL> insert into departments values ( 20 , null , 'Accounting') ;

1 row created.


SQL> insert into departments values ( 30 , null , 'Operation') ;

1 row created.



- تم ادخال بيانات 2 موظفين مع ادخال رموز الادارات التى يعملون بها

SQL> insert into employees values ( 1 , 10 , 'Asd' , 'Ahmed') ;

1 row created.

SQL> insert into employees values ( 2 , 20, 'Amgad', 'Ali');

1 row created.



- تم ادخال رقم الموظف (المدير) الذى سيعين رئيسا للادارة ... عن طريق امر التعديل update
بافتراض تم تعيين "اسد" رئيسا لادارتين رقم 10 ورقم 30

SQL> update departments set manager_id = 1 where department_id = 10;

1 row updated.

SQL> update departments set manager_id = 1 where department_id = 30;

1 row updated.


أوامر استعراض البيانات

SQL> select * from departments; DEPARTMENT_ID MANAGER_ID DEPARTMENT_NAME
------------- ---------- ------------------------------
          10          1 Computer
          20            Accounting
          30          1 Operation

SQL> select * from employees; EMPLOYEE_ID DEPARTMENT_ID FIRST_NAME      LAST_NAME
----------- ------------- --------------- ---------------
         1            10 Asd             Ahmed
         2            20 Amgad           Ali

SQL> select  department_name , first_name
 2  from employees  , departments
 3  where employee_id = manager_id;

DEPARTMENT_NAME                FIRST_NAME
------------------------------ ---------------
Computer                       Asd
Operation                      Asd


ارجوا ان تكون الفكرة واضحة

manager_er.jpg

بتاريخ:

ولكن لماذا لا نضع رقم المدير في جدول الموظفين ونربط self join ?? وانا مستخدمها ومافي مشاكل ؟؟

بتاريخ:
  • كاتب الموضوع

جزاك الله كل خير يأستاذنا أمجد
بارك الله فيك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.