فصل التصميم.pdf
11.1 MB
لمشاريع التخرج
فصل التصميم لاحد مشاريع طلاب السعيدة للعام الماضي
من يريد استخدام نفس النهج عليه بأضافة اسم المشروع ضمن المراجع في مشروعه كي يتم إعتماد صحتها
بحث مسار الطالب الجامعي - جامعة السعيدة - فرع ذمار - اليمن
مشرف المشروع
أ.م.د / بشير المقالح ( عميد كلية الحاسبات ونظم المعلوماتية بجامعة ذمار )
تم مراجعته من قبل عميد كلية الهندسة وتقنية المعلومات بجامعة السعيدة
فصل التصميم لاحد مشاريع طلاب السعيدة للعام الماضي
من يريد استخدام نفس النهج عليه بأضافة اسم المشروع ضمن المراجع في مشروعه كي يتم إعتماد صحتها
بحث مسار الطالب الجامعي - جامعة السعيدة - فرع ذمار - اليمن
مشرف المشروع
أ.م.د / بشير المقالح ( عميد كلية الحاسبات ونظم المعلوماتية بجامعة ذمار )
تم مراجعته من قبل عميد كلية الهندسة وتقنية المعلومات بجامعة السعيدة
👍2
DataBase قواعد بيانات
نص طلب مساعدة من الذكاء الاصطناعي في بناء دالة تقوم بالتحقق من تعقيد كلمة المرور : التحقق من ان النص يحتوي على احرف ورموز وارقام ولا يقل عن 6 خانات , sql server , Create function in sql server
CREATE FUNCTION dbo.CheckPasswordComplexity
(
@Password NVARCHAR(128)
)
RETURNS BIT
AS
BEGIN
DECLARE @HasLetter BIT, @HasDigit BIT, @HasSymbol BIT
SET @HasLetter = CASE WHEN @Password LIKE '%[a-zA-Z]%' THEN 1 ELSE 0 END
SET @HasDigit = CASE WHEN @Password LIKE '%[0-9]%' THEN 1 ELSE 0 END
SET @HasSymbol = CASE WHEN @Password LIKE '%[^a-zA-Z0-9]%' THEN 1 ELSE 0 END
RETURN (@HasLetter & @HasDigit & @HasSymbol & CASE WHEN LEN(@Password) >= 6 THEN 1 ELSE 0 END)
END
(
@Password NVARCHAR(128)
)
RETURNS BIT
AS
BEGIN
DECLARE @HasLetter BIT, @HasDigit BIT, @HasSymbol BIT
SET @HasLetter = CASE WHEN @Password LIKE '%[a-zA-Z]%' THEN 1 ELSE 0 END
SET @HasDigit = CASE WHEN @Password LIKE '%[0-9]%' THEN 1 ELSE 0 END
SET @HasSymbol = CASE WHEN @Password LIKE '%[^a-zA-Z0-9]%' THEN 1 ELSE 0 END
RETURN (@HasLetter & @HasDigit & @HasSymbol & CASE WHEN LEN(@Password) >= 6 THEN 1 ELSE 0 END)
END
يخبرك المدير التنفيذي في StabilityAI أن نهاية المبرمجين ستكون في غضون 5 سنوات. ويخبرك المدير التنفيذي لـ Nvidia أن المبرمجين أيامهم معدودة ...
نحن نريد أن نوضح شيء ضروري بخصوص هذه التصريحات الماضية، الحالية وحتى المستقبلية ...
ضع في حسبانك أن تصريحات هؤلاء الأشخاص تخدم مصالحهم أكثر من أي شيء آخر. فتصريح Nvidia جاء تمهيدًا لإطلاق برمجيتها الذكية Chat With RTX.
( هناك مثال يقول، لو شعرت بالألم في قدمك وذهبت لطبيب أسنان، سخبرك أن ضرسك هو سبب الألم ) .
الأمر سيان في أوساط شركات السيليكون فالي، ستخبرك Binance أن البيتكوين هو المستقبل، وسيخبرك JPMorgan أنه مجرد فقاعة. كل شخص يبحث عن مصالحه.
ولا ننسى الخدمات التي بدأت تلقب نفسها بخدمات AI. فخدمات أتمتة أصبحت AI، ومنصات بحث أصبحت منصات بحث بالـ AI. الـ AI عبارة رنانة الكل يستخدمها حتى إن كانت المنصة مجرد منصة عادية.
لا أحد يعرف ما الذي يخبئه المستقبل بالفعل، قد تكون بالفعل نهاية المبرمجين أو قد تكون نهاية الـ AI.
خدمات الـ AI بالفعل جلبت شيء جديد لحياتنا وسهلت الكثير. لكن في أوساط المحترفين هي تبقى مجرد أدوات. لا داعي للـ Hype ! إ
نحن نريد أن نوضح شيء ضروري بخصوص هذه التصريحات الماضية، الحالية وحتى المستقبلية ...
ضع في حسبانك أن تصريحات هؤلاء الأشخاص تخدم مصالحهم أكثر من أي شيء آخر. فتصريح Nvidia جاء تمهيدًا لإطلاق برمجيتها الذكية Chat With RTX.
( هناك مثال يقول، لو شعرت بالألم في قدمك وذهبت لطبيب أسنان، سخبرك أن ضرسك هو سبب الألم ) .
الأمر سيان في أوساط شركات السيليكون فالي، ستخبرك Binance أن البيتكوين هو المستقبل، وسيخبرك JPMorgan أنه مجرد فقاعة. كل شخص يبحث عن مصالحه.
ولا ننسى الخدمات التي بدأت تلقب نفسها بخدمات AI. فخدمات أتمتة أصبحت AI، ومنصات بحث أصبحت منصات بحث بالـ AI. الـ AI عبارة رنانة الكل يستخدمها حتى إن كانت المنصة مجرد منصة عادية.
لا أحد يعرف ما الذي يخبئه المستقبل بالفعل، قد تكون بالفعل نهاية المبرمجين أو قد تكون نهاية الـ AI.
خدمات الـ AI بالفعل جلبت شيء جديد لحياتنا وسهلت الكثير. لكن في أوساط المحترفين هي تبقى مجرد أدوات. لا داعي للـ Hype ! إ
👍5❤3
This media is not supported in your browser
VIEW IN TELEGRAM
الفرق بين
SQL & NoSQL
SQL & NoSQL
CREATE PROCEDURE UpdateUserStatusAndCreateAccountAndBalanceWithStatusCheck
@userId INT,
@userPerformingUpdate INT,
@groupId SMALLINT,
@accountNo NVARCHAR(12),
@yemeniCurrencyId NCHAR(3),
@saudiCurrencyId NCHAR(3)
AS
BEGIN
-- التحقق من حالة المستخدم الذي يقوم بالتحديث
DECLARE @statusPerformer TINYINT;
SELECT @statusPerformer = [status] FROM PMUser WHERE id = @userPerformingUpdate;
IF @statusPerformer != 1
BEGIN
RAISERROR ('المستخدم موقوف ولا يمتلك صلاحية للتحديث', 16, 1);
RETURN;
END
-- التحقق من حالة المستخدم المستهدف
DECLARE @statusTarget TINYINT;
SELECT @statusTarget = [status] FROM PMUser WHERE id = @userId;
IF @statusTarget = 3
BEGIN
RAISERROR ('المستخدم المراد تحديثه محظور من قبل الادارة', 16, 1);
RETURN;
END
-- تحديث حالة المستخدم المستهدف
UPDATE PMUser
SET [status] = 1
WHERE id = @userId;
-- إنشاء حساب جديد
INSERT INTO AMAccount (id, groupId, accountNo, [status], createAt, [denoscription])
VALUES (@userId, @groupId, @accountNo, 1, GETDATE(), '{}');
-- إنشاء رصيد بالعملة اليمنية
INSERT INTO AMBalance (accountId, groupId, currencyId, [status], amount, [denoscription])
VALUES (@userId, @groupId, @yemeniCurrencyId, 1, 0, '{}');
-- إنشاء رصيد بالعملة السعودية
INSERT INTO AMBalance (accountId, groupId, currencyId, [status], amount, [denoscription])
VALUES (@userId, @groupId, @saudiCurrencyId, 1, 0, '{}');
END;
@userId INT,
@userPerformingUpdate INT,
@groupId SMALLINT,
@accountNo NVARCHAR(12),
@yemeniCurrencyId NCHAR(3),
@saudiCurrencyId NCHAR(3)
AS
BEGIN
-- التحقق من حالة المستخدم الذي يقوم بالتحديث
DECLARE @statusPerformer TINYINT;
SELECT @statusPerformer = [status] FROM PMUser WHERE id = @userPerformingUpdate;
IF @statusPerformer != 1
BEGIN
RAISERROR ('المستخدم موقوف ولا يمتلك صلاحية للتحديث', 16, 1);
RETURN;
END
-- التحقق من حالة المستخدم المستهدف
DECLARE @statusTarget TINYINT;
SELECT @statusTarget = [status] FROM PMUser WHERE id = @userId;
IF @statusTarget = 3
BEGIN
RAISERROR ('المستخدم المراد تحديثه محظور من قبل الادارة', 16, 1);
RETURN;
END
-- تحديث حالة المستخدم المستهدف
UPDATE PMUser
SET [status] = 1
WHERE id = @userId;
-- إنشاء حساب جديد
INSERT INTO AMAccount (id, groupId, accountNo, [status], createAt, [denoscription])
VALUES (@userId, @groupId, @accountNo, 1, GETDATE(), '{}');
-- إنشاء رصيد بالعملة اليمنية
INSERT INTO AMBalance (accountId, groupId, currencyId, [status], amount, [denoscription])
VALUES (@userId, @groupId, @yemeniCurrencyId, 1, 0, '{}');
-- إنشاء رصيد بالعملة السعودية
INSERT INTO AMBalance (accountId, groupId, currencyId, [status], amount, [denoscription])
VALUES (@userId, @groupId, @saudiCurrencyId, 1, 0, '{}');
END;
❤5
DataBase قواعد بيانات
CREATE PROCEDURE UpdateUserStatusAndCreateAccountAndBalanceWithStatusCheck @userId INT, @userPerformingUpdate INT, @groupId SMALLINT, @accountNo NVARCHAR(12), @yemeniCurrencyId NCHAR(3), @saudiCurrencyId NCHAR(3) AS BEGIN -- التحقق…
جربت تحدي الذكاء الاصطناعي من اجل كتابة كود يناسب قاعدة بياناتي لأجراء مخزن يحتوي على الكثير من التفاصيل ويتعامل مع عده جداول وكانت النتيجة 100% كما اريد
👍1
create table AMService (
id int primary key identity(1, 1),
categoryId smallint not null constraint FK_AMService_AMCategory foreign key references AMCategory(id),
currencyId nchar(3) not null constraint FK_AMService_AMCurrency foreign key references AMCurrency(id),
fatherId int constraint FK_AMService_AMServiceFather foreign key references AMService(id),
serviceCode nvarchar(20) not null,
amount money not null,
);
create table AMPayment (
id int primary key identity(1, 1),
currencyId nchar(3) not null constraint FK_AMPayment_AMCurrency foreign key references AMCurrency(id),
serviceId int not null constraint FK_AMPayment_AMService foreign key references AMService(id),
userId int not null constraint FK_AMPayment_PMUser foreign key references PMUser(id),
amount money not null,
);
create table AMTransfer (
id int primary key identity(1, 1),
accountId int not null,
groupId smallint not null,
currencyId nchar(3) not null,
constraint FK_AMTransfer_AMBalance foreign key(groupId, accountId,currencyId) references AMBalance(groupId, accountId,currencyId),
paymentId int not null constraint FK_AMTransfer_AMPayment foreign key references AMPayment(id),
amount money not null,
);
create table PMUser (
id int primary key constraint FK_PMUser_PMAuth foreign key references PMAuth(id),
[status] tinyint not null default(0),
);
هل يمكنك كتابة كود اجراء مخزن يقوم بفحص اذا كان حالة المستخدم لا تساوي 1 يظهر رسالة خطأ بأن المستخدم غير شغال او محظور
مالم يقوم بالتحقق بأن حالة الخدمة لا تساوي 1 يظهر رسالة خطأ بأن الخدمة غير متاحة
مالم يقوم بأنشاء عملية دفع اذا كان مبلغ الدفع ليس اقل من تكلفة الخدمة ثم يقوم بالتاثير على الحسابات من خلال اضافة صفوف الى جدول التحويلات للتأثير على الحسابات المرتبطة بعملية الدفع؟
id int primary key identity(1, 1),
categoryId smallint not null constraint FK_AMService_AMCategory foreign key references AMCategory(id),
currencyId nchar(3) not null constraint FK_AMService_AMCurrency foreign key references AMCurrency(id),
fatherId int constraint FK_AMService_AMServiceFather foreign key references AMService(id),
serviceCode nvarchar(20) not null,
amount money not null,
);
create table AMPayment (
id int primary key identity(1, 1),
currencyId nchar(3) not null constraint FK_AMPayment_AMCurrency foreign key references AMCurrency(id),
serviceId int not null constraint FK_AMPayment_AMService foreign key references AMService(id),
userId int not null constraint FK_AMPayment_PMUser foreign key references PMUser(id),
amount money not null,
);
create table AMTransfer (
id int primary key identity(1, 1),
accountId int not null,
groupId smallint not null,
currencyId nchar(3) not null,
constraint FK_AMTransfer_AMBalance foreign key(groupId, accountId,currencyId) references AMBalance(groupId, accountId,currencyId),
paymentId int not null constraint FK_AMTransfer_AMPayment foreign key references AMPayment(id),
amount money not null,
);
create table PMUser (
id int primary key constraint FK_PMUser_PMAuth foreign key references PMAuth(id),
[status] tinyint not null default(0),
);
هل يمكنك كتابة كود اجراء مخزن يقوم بفحص اذا كان حالة المستخدم لا تساوي 1 يظهر رسالة خطأ بأن المستخدم غير شغال او محظور
مالم يقوم بالتحقق بأن حالة الخدمة لا تساوي 1 يظهر رسالة خطأ بأن الخدمة غير متاحة
مالم يقوم بأنشاء عملية دفع اذا كان مبلغ الدفع ليس اقل من تكلفة الخدمة ثم يقوم بالتاثير على الحسابات من خلال اضافة صفوف الى جدول التحويلات للتأثير على الحسابات المرتبطة بعملية الدفع؟
CREATE PROCEDURE ProcessPayment
@userId INT,
@serviceId INT,
@paymentAmount MONEY
AS
BEGIN
-- Check if the user status is not equal to 1 (active)
IF (SELECT [status] FROM PMUser WHERE id = @userId) <> 1
BEGIN
RAISERROR('المستخدم غير شغال أو محظور', 16, 1);
RETURN;
END
-- Check if the service status is not equal to 1 (available)
IF (SELECT [status] FROM AMService WHERE id = @serviceId) <> 1
BEGIN
RAISERROR('الخدمة غير متاحة', 16, 1);
RETURN;
END
-- Check if the payment amount is not less than the service cost
DECLARE @serviceCost MONEY;
SELECT @serviceCost = amount FROM AMService WHERE id = @serviceId;
IF @paymentAmount < @serviceCost
BEGIN
RAISERROR('مبلغ الدفع أقل من تكلفة الخدمة', 16, 1);
RETURN;
END
-- Proceed with creating a payment record
INSERT INTO AMPayment (currencyId, serviceId, userId, amount, [status], [denoscription])
VALUES ((SELECT currencyId FROM AMService WHERE id = @serviceId), @serviceId, @userId, @paymentAmount, 1, '{}');
DECLARE @paymentId INT;
SET @paymentId = SCOPE_IDENTITY();
-- Affect the accounts by adding rows to the AMTransfer table
-- This is a placeholder for the logic to affect the accounts
-- You will need to replace it with the actual logic based on your application's requirements
INSERT INTO AMTransfer (accountId, groupId, currencyId, paymentId, amount, [denoscription])
VALUES (/* accountId */, /* groupId */, (SELECT currencyId FROM AMService WHERE id = @serviceId), @paymentId, @paymentAmount, '{}');
END
@userId INT,
@serviceId INT,
@paymentAmount MONEY
AS
BEGIN
-- Check if the user status is not equal to 1 (active)
IF (SELECT [status] FROM PMUser WHERE id = @userId) <> 1
BEGIN
RAISERROR('المستخدم غير شغال أو محظور', 16, 1);
RETURN;
END
-- Check if the service status is not equal to 1 (available)
IF (SELECT [status] FROM AMService WHERE id = @serviceId) <> 1
BEGIN
RAISERROR('الخدمة غير متاحة', 16, 1);
RETURN;
END
-- Check if the payment amount is not less than the service cost
DECLARE @serviceCost MONEY;
SELECT @serviceCost = amount FROM AMService WHERE id = @serviceId;
IF @paymentAmount < @serviceCost
BEGIN
RAISERROR('مبلغ الدفع أقل من تكلفة الخدمة', 16, 1);
RETURN;
END
-- Proceed with creating a payment record
INSERT INTO AMPayment (currencyId, serviceId, userId, amount, [status], [denoscription])
VALUES ((SELECT currencyId FROM AMService WHERE id = @serviceId), @serviceId, @userId, @paymentAmount, 1, '{}');
DECLARE @paymentId INT;
SET @paymentId = SCOPE_IDENTITY();
-- Affect the accounts by adding rows to the AMTransfer table
-- This is a placeholder for the logic to affect the accounts
-- You will need to replace it with the actual logic based on your application's requirements
INSERT INTO AMTransfer (accountId, groupId, currencyId, paymentId, amount, [denoscription])
VALUES (/* accountId */, /* groupId */, (SELECT currencyId FROM AMService WHERE id = @serviceId), @paymentId, @paymentAmount, '{}');
END
هذه تجربة اخرى اعطيت الذكاء الاصطناعي كود انشاء جداولي ثم طلبت منه انشاء اجراء مفصل وكانت النتيجة كما طلبت تماما
تم قص جزء من اكواد الجداول
تم قص جزء من اكواد الجداول
لقد قمت بمراجعة الجداول التي أرسلتها، وهنا بعض الملاحظات:
1. الأمان: استخدام نوع البيانات
2. التحقق من الصحة: حقل
3. التنظيم: استخدام نوع البيانات
4. التعريفات: يُفضل تحديد العلاقات بين الجداول بشكل واضح، مثل العلاقة بين
5. الأداء: لجداول مثل `AMBalance`، قد تحتاج إلى فهرسة على الحقول التي ستستخدم بشكل متكرر في الاستعلامات لتحسين الأداء.
6. التدقيق: قد ترغب في إضافة حقول لتسجيل الأحداث مثل
يمكنك إضافة المزيد من الكود، وسأقوم بمراجعته أيضًا.
1. الأمان: استخدام نوع البيانات
image لـ passwordHash و passwordSalt ليس مثاليًا. يُفضل استخدام نوع بيانات varbinary لتخزين الهاش والملح لأنه أكثر ملاءمة للبيانات الثنائية.2. التحقق من الصحة: حقل
email في جدول PMAuth محدود بـ 20 حرفًا فقط، وهذا قد لا يكون كافيًا لعناوين البريد الإلكتروني الطويلة. قد تحتاج إلى زيادة هذا الحد.3. التنظيم: استخدام نوع البيانات
text للوصف قد يكون مفرطًا وغير مُحسّن. يُفضل استخدام nvarchar(MAX) أو varchar(MAX) إذا كنت تحتاج إلى تخزين نصوص طويلة.4. التعريفات: يُفضل تحديد العلاقات بين الجداول بشكل واضح، مثل العلاقة بين
AMAccount و AMAccountGroup. تأكد من أن العلاقات تعكس الهيكل التنظيمي للبيانات بشكل صحيح.5. الأداء: لجداول مثل `AMBalance`، قد تحتاج إلى فهرسة على الحقول التي ستستخدم بشكل متكرر في الاستعلامات لتحسين الأداء.
6. التدقيق: قد ترغب في إضافة حقول لتسجيل الأحداث مثل
lastUpdatedAt لتتبع التغييرات في السجلات.يمكنك إضافة المزيد من الكود، وسأقوم بمراجعته أيضًا.
شكرًا لمشاركة بقية الكود. إليك بعض الملاحظات الإضافية:
1. التناسق: تأكد من أن جميع الجداول تستخدم نفس نوع البيانات للحقول المتشابهة، مثل
2. الفهرسة: لجدول
3. العلاقات: تأكد من أن العلاقات بين الجداول تعكس بدقة العمليات التجارية والمنطقية لنظامك. على سبيل المثال، العلاقة بين
4. التحقق من الصحة: قد ترغب في إضافة قيود على الحقول مثل
5. التوثيق: من المهم توثيق الجداول والعلاقات بينها بشكل جيد، بما في ذلك القيود والقواعد المستخدمة. هذا سيساعد في الحفاظ على قابلية الصيانة والتوسع في المستقبل.
إذا كان لديك أي استفسارات أخرى أو تحتاج إلى مزيد من المساعدة، فلا تتردد في طرحها.
1. التناسق: تأكد من أن جميع الجداول تستخدم نفس نوع البيانات للحقول المتشابهة، مثل
denoscription. إذا قررت استخدام nvarchar(MAX) بدلاً من `text`، فعليك تحديث جميع الجداول لتعكس هذا التغيير.2. الفهرسة: لجدول
AMTransfer`، قد تحتاج إلى فهرسة حقل `createAt إذا كنت تخطط لإجراء استعلامات تاريخية أو ترتيب السجلات بناءً على تاريخ الإنشاء.3. العلاقات: تأكد من أن العلاقات بين الجداول تعكس بدقة العمليات التجارية والمنطقية لنظامك. على سبيل المثال، العلاقة بين
AMTransfer و AMPayment يجب أن تعكس العملية التجارية للتحويلات المالية.4. التحقق من الصحة: قد ترغب في إضافة قيود على الحقول مثل
amount لضمان أن القيم المدخلة تتوافق مع القواعد المالية لتطبيقك.5. التوثيق: من المهم توثيق الجداول والعلاقات بينها بشكل جيد، بما في ذلك القيود والقواعد المستخدمة. هذا سيساعد في الحفاظ على قابلية الصيانة والتوسع في المستقبل.
إذا كان لديك أي استفسارات أخرى أو تحتاج إلى مزيد من المساعدة، فلا تتردد في طرحها.
لجعل تطبيق الدفع الإلكتروني متكاملًا ومميزًا، قد تحتاج إلى النظر في إضافة الجداول التالية:
1. جدول المعاملات (Transactions): لتسجيل كل عملية دفع أو تحويل تتم من خلال التطبيق.
2. جدول الإشعارات (Notifications): لإرسال تنبيهات للمستخدمين بشأن العمليات المهمة أو التغييرات في حالة الحساب.
3. جدول السجلات الأمنية (SecurityLogs): لتتبع محاولات الدخول الناجحة وغير الناجحة وأي تغييرات أمنية أخرى.
4. جدول الإعدادات (Settings): لتخزين إعدادات المستخدم وتفضيلات التطبيق.
5. جدول الرسائل (Messages): إذا كنت تخطط لتضمين ميزة الدردشة أو التواصل بين المستخدمين.
6. جدول الدعم الفني (SupportTickets): لإدارة طلبات الدعم والاستفسارات من المستخدمين.
7. جدول التقارير (Reports): لتوليد تقارير مالية وإحصائيات استخدام التطبيق.
8. جدول الأدوار والصلاحيات (Roles & Permissions): لتحديد مستويات الوصول والصلاحيات للمستخدمين داخل التطبيق.
9. جدول العروض الترويجية (Promotions): لإدارة الخصومات والعروض الترويجية للمستخدمين.
10. جدول التحقق من الهوية (IdentityVerification): لتخزين نتائج عمليات التحقق من هوية المستخدمين.
هذه بعض الأمثلة على الجداول التي قد تكون مفيدة لتطبيقك. من المهم أيضًا التفكير في كيفية تفاعل هذه الجداول مع بعضها البعض وكيفية تأثيرها على تجربة المستخدم النهائية. إذا كان لديك أي استفسارات أخرى أو تحتاج إلى مزيد من المساعدة، فلا تتردد في طرحها.
1. جدول المعاملات (Transactions): لتسجيل كل عملية دفع أو تحويل تتم من خلال التطبيق.
2. جدول الإشعارات (Notifications): لإرسال تنبيهات للمستخدمين بشأن العمليات المهمة أو التغييرات في حالة الحساب.
3. جدول السجلات الأمنية (SecurityLogs): لتتبع محاولات الدخول الناجحة وغير الناجحة وأي تغييرات أمنية أخرى.
4. جدول الإعدادات (Settings): لتخزين إعدادات المستخدم وتفضيلات التطبيق.
5. جدول الرسائل (Messages): إذا كنت تخطط لتضمين ميزة الدردشة أو التواصل بين المستخدمين.
6. جدول الدعم الفني (SupportTickets): لإدارة طلبات الدعم والاستفسارات من المستخدمين.
7. جدول التقارير (Reports): لتوليد تقارير مالية وإحصائيات استخدام التطبيق.
8. جدول الأدوار والصلاحيات (Roles & Permissions): لتحديد مستويات الوصول والصلاحيات للمستخدمين داخل التطبيق.
9. جدول العروض الترويجية (Promotions): لإدارة الخصومات والعروض الترويجية للمستخدمين.
10. جدول التحقق من الهوية (IdentityVerification): لتخزين نتائج عمليات التحقق من هوية المستخدمين.
هذه بعض الأمثلة على الجداول التي قد تكون مفيدة لتطبيقك. من المهم أيضًا التفكير في كيفية تفاعل هذه الجداول مع بعضها البعض وكيفية تأثيرها على تجربة المستخدم النهائية. إذا كان لديك أي استفسارات أخرى أو تحتاج إلى مزيد من المساعدة، فلا تتردد في طرحها.
👍1