ما هو الـ Derived Attribute؟
الـ Derived Attribute هو خاصية (Attribute) في قواعد البيانات تُشتق قيمتها من بيانات أخرى موجودة داخل قاعدة البيانات بدلاً من أن تكون مُخزّنة بشكل مباشر. بمعنى آخر، يتم حساب قيمة الـ Derived Attribute ديناميكيًا بناءً على خصائص أو معطيات أخرى عند الحاجة.
أهمية الـ Derived Attribute
- توفير المساحة التخزينية:
- بدلًا من تخزين البيانات المُشتقة بشكل منفصل، يتم حسابها عند الحاجة فقط.
- تجنب التكرار (Redundancy):
- يقلل من تكرار البيانات لأن القيم المُشتقة يمكن حسابها باستخدام معادلات أو علاقات.
- المرونة في التحديث:
- عند تغيير أي من البيانات الأساسية، يتم إعادة حساب القيمة المُشتقة تلقائيًا لضمان الدقة.
امتا بنحتاج نخزنها وازاي؟
- عندما يكون العمود المحسوب يُستخدم بشكل متكرر في الاستعلامات.
- لو حسابه بياخد وقت
- عند الحاجة إلى إنشاء 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
- دقة البيانات:
- يتم حساب القيمة المُشتقة في الوقت الفعلي، مما يضمن أن البيانات محدثة دائمًا.
- توفير الوقت عند الاستعلام:
- يمكن حسابها مباشرة عند تنفيذ الاستعلام دون الحاجة لتخزينها.
- سهولة الصيانة:
- عند تغيير البيانات الأصلية، يتم تحديث القيم المشتقة تلقائيًا.
عيوب الـ Derived Attribute
- زيادة وقت الاستعلام:
- حساب القيم المُشتقة في كل مرة يمكن أن يزيد من وقت التنفيذ إذا كان هناك عدد كبير من العمليات الحسابية.
- تعقيد الاستعلامات:
- قد تتطلب الاستعلامات كتابة معادلات إضافية لحساب القيم المُشتقة.
- عدم التخزين:
- في بعض الأحيان، تكون القيم المشتقة ضرورية بكثرة، وفي هذه الحالة يكون من الأفضل تخزينها لتحسين الأداء.
متى يجب استخدام Derived Attribute؟
- عندما تكون القيم المشتقة نادرة الاستخدام:
- يتم حسابها عند الطلب فقط، مما يوفر المساحة.
- عندما تعتمد القيم المشتقة على بيانات دائمة التغيير:
- مثل العمر الذي يتغير مع مرور الوقت.
- عند الحاجة إلى الحفاظ على البيانات الأساسية فقط:
- لتقليل التكرار وتحسين إدارة البيانات.
مقارنة بين Stored Attribute و Derived Attribute
الميزة | Stored Attribute | Derived Attribute |
---|---|---|
التخزين | يتم تخزين القيم بشكل مباشر في الجدول | لا يتم تخزين القيم، بل يتم حسابها عند الطلب |
التكرار (Redundancy) | قد يؤدي إلى تكرار البيانات | يقلل التكرار لأنه يعتمد على بيانات أخرى |
الأداء | أسرع عند الاستعلام لأنه مُخزن | أبطأ عند الاستعلام لأنه يتم حسابه |
التحديث | يتطلب تحديثًا يدويًا عند تغيير البيانات | يتم تحديثه تلقائيًا بناءً على البيانات الأصلية |
خلاصة
- الـ Derived Attribute هو قيمة يتم اشتقاقها أو حسابها ديناميكيًا من بيانات أخرى مخزنة في قاعدة البيانات.
- من أمثلته: العمر (Age)، إجمالي السعر (Total Price)، والراتب السنوي (Annual Salary).
- يُساعد على تقليل التكرار وتوفير المساحة التخزينية، ولكنه قد يزيد من وقت الاستعلام بسبب العمليات الحسابية.
- القرار بين تخزين القيمة أو اشتقاقها يعتمد على تكرار استخدامها ومتطلبات الأداء في التطبيق.