ما هو الـ Derived Attribute؟

الـ Derived Attribute هو خاصية (Attribute) في قواعد البيانات تُشتق قيمتها من بيانات أخرى موجودة داخل قاعدة البيانات بدلاً من أن تكون مُخزّنة بشكل مباشر. بمعنى آخر، يتم حساب قيمة الـ Derived Attribute ديناميكيًا بناءً على خصائص أو معطيات أخرى عند الحاجة.


أهمية الـ Derived Attribute

  1. توفير المساحة التخزينية:
    • بدلًا من تخزين البيانات المُشتقة بشكل منفصل، يتم حسابها عند الحاجة فقط.
  2. تجنب التكرار (Redundancy):
    • يقلل من تكرار البيانات لأن القيم المُشتقة يمكن حسابها باستخدام معادلات أو علاقات.
  3. المرونة في التحديث:
    • عند تغيير أي من البيانات الأساسية، يتم إعادة حساب القيمة المُشتقة تلقائيًا لضمان الدقة.

امتا بنحتاج نخزنها وازاي؟

  • عندما يكون العمود المحسوب يُستخدم بشكل متكرر في الاستعلامات.
  • لو حسابه بياخد وقت
  • عند الحاجة إلى إنشاء Indexes على الأعمدة المحسوبة.
  • لو معتمد على Derived تاني
الميزةبدون PERSISTEDمع PERSISTED
التخزينلا يتم تخزين القيمةيتم تخزين القيمة فعليًا
الأداءيتم حساب القيمة في Runtime عند كل استعلامتُحسب مرة واحدة وتُخزن ثم تُقرأ مباشرة
إنشاء Indexغير ممكنممكن
التحديثحساب فوري عند كل استعلامتحديث تلقائي عند إدراج/تحديث

الخلاصة:

  • بدون PERSISTED: يتم حساب القيمة في Runtime عند كل استعلام.
  • مع PERSISTED: تُحسب القيمة مرة واحدة فقط عند التحديث وتُقرأ مباشرة لتحسين الأداء.

أمثلة على الـ Derived Attribute

1. العمر (Age)

إذا كان لدينا تاريخ الميلاد (BirthDate) في قاعدة البيانات، يمكننا حساب العمر كـ Derived Attribute باستخدام التاريخ الحالي.

الصيغة:

Age = Current Date - BirthDate

مثال SQL:

SELECT Name, BirthDate, DATEDIFF(YEAR, BirthDate, GETDATE()) AS Age
FROM Employees;
  • الـBirthDate هو الـ Attribute الأساسي.
  • الـAge هو الـ Derived Attribute المُشتق من BirthDate.

2. إجمالي السعر (Total Price)

في جدول المشتريات، إذا كان لدينا سعر الوحدة (UnitPrice) والكمية (Quantity)، يمكننا حساب إجمالي السعر.

الصيغة:

TotalPrice = UnitPrice * Quantity

مثال SQL:

SELECT ProductName, UnitPrice, Quantity, 
       (UnitPrice * Quantity) AS TotalPrice
FROM Orders;
  • الـUnitPrice و Quantity هما البيانات الأساسية.
  • الـTotalPrice هو الـ Derived Attribute المُشتق.

3. الراتب السنوي (Annual Salary)

إذا كان لدينا الراتب الشهري (Monthly Salary) في قاعدة البيانات، يمكننا حساب الراتب السنوي كالتالي:

الصيغة:

Annual Salary = Monthly Salary * 12

مثال SQL:

SELECT EmployeeName, MonthlySalary, 
       (MonthlySalary * 12) AS AnnualSalary
FROM Employees;
  • الـMonthlySalary هو البيانات المخزنة.
  • الـAnnualSalary هو الـ Derived Attribute.

مميزات الـ Derived Attribute

  1. دقة البيانات:
    • يتم حساب القيمة المُشتقة في الوقت الفعلي، مما يضمن أن البيانات محدثة دائمًا.
  2. توفير الوقت عند الاستعلام:
    • يمكن حسابها مباشرة عند تنفيذ الاستعلام دون الحاجة لتخزينها.
  3. سهولة الصيانة:
    • عند تغيير البيانات الأصلية، يتم تحديث القيم المشتقة تلقائيًا.

عيوب الـ Derived Attribute

  1. زيادة وقت الاستعلام:
    • حساب القيم المُشتقة في كل مرة يمكن أن يزيد من وقت التنفيذ إذا كان هناك عدد كبير من العمليات الحسابية.
  2. تعقيد الاستعلامات:
    • قد تتطلب الاستعلامات كتابة معادلات إضافية لحساب القيم المُشتقة.
  3. عدم التخزين:
    • في بعض الأحيان، تكون القيم المشتقة ضرورية بكثرة، وفي هذه الحالة يكون من الأفضل تخزينها لتحسين الأداء.

متى يجب استخدام Derived Attribute؟

  • عندما تكون القيم المشتقة نادرة الاستخدام:
    • يتم حسابها عند الطلب فقط، مما يوفر المساحة.
  • عندما تعتمد القيم المشتقة على بيانات دائمة التغيير:
    • مثل العمر الذي يتغير مع مرور الوقت.
  • عند الحاجة إلى الحفاظ على البيانات الأساسية فقط:
    • لتقليل التكرار وتحسين إدارة البيانات.

مقارنة بين Stored Attribute و Derived Attribute

الميزةStored AttributeDerived Attribute
التخزينيتم تخزين القيم بشكل مباشر في الجدوللا يتم تخزين القيم، بل يتم حسابها عند الطلب
التكرار (Redundancy)قد يؤدي إلى تكرار البياناتيقلل التكرار لأنه يعتمد على بيانات أخرى
الأداءأسرع عند الاستعلام لأنه مُخزنأبطأ عند الاستعلام لأنه يتم حسابه
التحديثيتطلب تحديثًا يدويًا عند تغيير البياناتيتم تحديثه تلقائيًا بناءً على البيانات الأصلية

خلاصة

  • الـ Derived Attribute هو قيمة يتم اشتقاقها أو حسابها ديناميكيًا من بيانات أخرى مخزنة في قاعدة البيانات.
  • من أمثلته: العمر (Age)، إجمالي السعر (Total Price)، والراتب السنوي (Annual Salary).
  • يُساعد على تقليل التكرار وتوفير المساحة التخزينية، ولكنه قد يزيد من وقت الاستعلام بسبب العمليات الحسابية.
  • القرار بين تخزين القيمة أو اشتقاقها يعتمد على تكرار استخدامها ومتطلبات الأداء في التطبيق.