شكرًا لمشاركة بقية الكود. إليك بعض الملاحظات الإضافية:
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
DataBase قواعد بيانات
Photo
-- جدول المعاملات
CREATE TABLE Transactions (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
accountId INT NOT NULL,
amount MONEY NOT NULL,
transactionType NVARCHAR(50) NOT NULL,
createAt DATETIME NOT NULL DEFAULT(GETDATE()),
[denoscription] NVARCHAR(MAX) NOT NULL DEFAULT('{}')
);
-- جدول الإشعارات
CREATE TABLE Notifications (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
noscript NVARCHAR(100) NOT NULL,
message NVARCHAR(MAX) NOT NULL,
isRead BIT NOT NULL DEFAULT(0),
createAt DATETIME NOT NULL DEFAULT(GETDATE())
);
-- جدول السجلات الأمنية
CREATE TABLE SecurityLogs (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
action NVARCHAR(100) NOT NULL,
result NVARCHAR(100) NOT NULL,
ipAddress NVARCHAR(20),
createAt DATETIME NOT NULL DEFAULT(GETDATE())
);
-- جدول الإعدادات
CREATE TABLE Settings (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
settingKey NVARCHAR(100) NOT NULL,
settingValue NVARCHAR(MAX) NOT NULL,
updateAt DATETIME NOT NULL DEFAULT(GETDATE())
);
-- جدول الرسائل
CREATE TABLE Messages (
id INT PRIMARY KEY IDENTITY(1,1),
senderId INT NOT NULL,
receiverId INT NOT NULL,
messageText NVARCHAR(MAX) NOT NULL,
isRead BIT NOT NULL DEFAULT(0),
sendAt DATETIME NOT NULL DEFAULT(GETDATE())
);
-- جدول الدعم الفني
CREATE TABLE SupportTickets (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
subject NVARCHAR(100) NOT NULL,
message NVARCHAR(MAX) NOT NULL,
status NVARCHAR(50) NOT NULL,
createAt DATETIME NOT NULL DEFAULT(GETDATE()),
updateAt DATETIME
);
-- جدول التقارير
CREATE TABLE Reports (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
reportType NVARCHAR(100) NOT NULL,
reportData NVARCHAR(MAX) NOT NULL,
createAt DATETIME NOT NULL DEFAULT(GETDATE())
);
-- جدول الأدوار والصلاحيات
CREATE TABLE Roles (
id INT PRIMARY KEY IDENTITY(1,1),
roleName NVARCHAR(100) NOT NULL
);
CREATE TABLE Permissions (
id INT PRIMARY KEY IDENTITY(1,1),
permissionName NVARCHAR(100) NOT NULL
);
CREATE TABLE RolePermissions (
roleId INT NOT NULL,
permissionId INT NOT NULL,
PRIMARY KEY (roleId, permissionId),
FOREIGN KEY (roleId) REFERENCES Roles(id),
FOREIGN KEY (permissionId) REFERENCES Permissions(id)
);
-- جدول العروض الترويجية
CREATE TABLE Promotions (
id INT PRIMARY KEY IDENTITY(1,1),
promotionCode NVARCHAR(50) NOT NULL,
denoscription NVARCHAR(MAX) NOT NULL,
discount DECIMAL(5,2) NOT NULL,
startAt DATETIME NOT NULL,
endAt DATETIME NOT NULL,
[status] TINYINT NOT NULL DEFAULT(1)
);
-- جدول التحقق من الهوية
CREATE TABLE IdentityVerification (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
verificationType NVARCHAR(100) NOT NULL,
verificationStatus NVARCHAR(50) NOT NULL,
createAt DATETIME NOT NULL DEFAULT(GETDATE()),
verifiedAt DATETIME
);
CREATE TABLE Transactions (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
accountId INT NOT NULL,
amount MONEY NOT NULL,
transactionType NVARCHAR(50) NOT NULL,
createAt DATETIME NOT NULL DEFAULT(GETDATE()),
[denoscription] NVARCHAR(MAX) NOT NULL DEFAULT('{}')
);
-- جدول الإشعارات
CREATE TABLE Notifications (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
noscript NVARCHAR(100) NOT NULL,
message NVARCHAR(MAX) NOT NULL,
isRead BIT NOT NULL DEFAULT(0),
createAt DATETIME NOT NULL DEFAULT(GETDATE())
);
-- جدول السجلات الأمنية
CREATE TABLE SecurityLogs (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
action NVARCHAR(100) NOT NULL,
result NVARCHAR(100) NOT NULL,
ipAddress NVARCHAR(20),
createAt DATETIME NOT NULL DEFAULT(GETDATE())
);
-- جدول الإعدادات
CREATE TABLE Settings (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
settingKey NVARCHAR(100) NOT NULL,
settingValue NVARCHAR(MAX) NOT NULL,
updateAt DATETIME NOT NULL DEFAULT(GETDATE())
);
-- جدول الرسائل
CREATE TABLE Messages (
id INT PRIMARY KEY IDENTITY(1,1),
senderId INT NOT NULL,
receiverId INT NOT NULL,
messageText NVARCHAR(MAX) NOT NULL,
isRead BIT NOT NULL DEFAULT(0),
sendAt DATETIME NOT NULL DEFAULT(GETDATE())
);
-- جدول الدعم الفني
CREATE TABLE SupportTickets (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
subject NVARCHAR(100) NOT NULL,
message NVARCHAR(MAX) NOT NULL,
status NVARCHAR(50) NOT NULL,
createAt DATETIME NOT NULL DEFAULT(GETDATE()),
updateAt DATETIME
);
-- جدول التقارير
CREATE TABLE Reports (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
reportType NVARCHAR(100) NOT NULL,
reportData NVARCHAR(MAX) NOT NULL,
createAt DATETIME NOT NULL DEFAULT(GETDATE())
);
-- جدول الأدوار والصلاحيات
CREATE TABLE Roles (
id INT PRIMARY KEY IDENTITY(1,1),
roleName NVARCHAR(100) NOT NULL
);
CREATE TABLE Permissions (
id INT PRIMARY KEY IDENTITY(1,1),
permissionName NVARCHAR(100) NOT NULL
);
CREATE TABLE RolePermissions (
roleId INT NOT NULL,
permissionId INT NOT NULL,
PRIMARY KEY (roleId, permissionId),
FOREIGN KEY (roleId) REFERENCES Roles(id),
FOREIGN KEY (permissionId) REFERENCES Permissions(id)
);
-- جدول العروض الترويجية
CREATE TABLE Promotions (
id INT PRIMARY KEY IDENTITY(1,1),
promotionCode NVARCHAR(50) NOT NULL,
denoscription NVARCHAR(MAX) NOT NULL,
discount DECIMAL(5,2) NOT NULL,
startAt DATETIME NOT NULL,
endAt DATETIME NOT NULL,
[status] TINYINT NOT NULL DEFAULT(1)
);
-- جدول التحقق من الهوية
CREATE TABLE IdentityVerification (
id INT PRIMARY KEY IDENTITY(1,1),
userId INT NOT NULL,
verificationType NVARCHAR(100) NOT NULL,
verificationStatus NVARCHAR(50) NOT NULL,
createAt DATETIME NOT NULL DEFAULT(GETDATE()),
verifiedAt DATETIME
);
❤5👍3
Screenshot_20240409-053545_Chrome.jpg
438.1 KB
المنهج الجامعي مفيد جدا جدآ جدآ لكنه لا يكفي ف لكي تتقن بناء مثل هذه البرمجيات ... عليك ان تتعلم 10 اضعاف المنهج الجامعي.
❤4👍1
انواع العمليات في لغة SQL.pptx
71.1 KB
لا نهتم بالحفظ
فهم بحتي لا يشوبه اي نسبة من الحفظ
فهم بحتي لا يشوبه اي نسبة من الحفظ
قواعد بيانات عملي.pdf
3.3 MB
كتاب باللغة العربية لشرح اساسيات الجانب العملي في قواعد البيانات
هذا المنهج المستخدم في الجامعة للسنوات الماضية
وذلك لضعف مستوى الطلبة في اللغة الانجليزية
حيث كان سابقاً ( قبل ٤ سنوات ) بالانجليزي لكلا الجانبين النظري والعملي
هذا المنهج المستخدم في الجامعة للسنوات الماضية
وذلك لضعف مستوى الطلبة في اللغة الانجليزية
حيث كان سابقاً ( قبل ٤ سنوات ) بالانجليزي لكلا الجانبين النظري والعملي
👍1
الصورة توضح عملية اختيار قاعدة البيانات بناءً على عدة عوامل لتحديد أفضل قاعدة بيانات تناسب احتياجات النظام أو المشروع.
#الخلاصة:
هذه الخطوات توضح كيفية اختيار قاعدة البيانات الأنسب بناءً على نوع البيانات، العلاقات، حجم البيانات، عدد المستخدمين، حمل القراءة أو الكتابة، الزمن المستغرق المقبول، الأمان، الأدوات، والدعم. باتباع هذه الخطوات، يمكنك اتخاذ قرار مدروس حول اختيار قاعدة البيانات التي تناسب احتياجات مشروعك.
سأشرح الخطوات الواردة بالتفصيل:
1. تحديد نوع البيانات (Database?)
هنا يجب أن تفهم نوع البيانات التي ستتعامل معها:
Structured (مهيكلة): البيانات المهيكلة مثل الجداول التي تحتوي على صفوف وأعمدة.
Semi-Structured (شبه مهيكلة): البيانات التي تحتوي على نوع من التنظيم ولكنها ليست صارمة مثل JSON و XML.
Unstructured (غير مهيكلة): البيانات التي لا تحتوي على تنظيم مثل الصور والفيديوهات.
2. العلاقات أو الأنماط؟ (Pattern or Relationships?)
إذا كانت البيانات تحتوي على علاقات واضحة وتحتاج لنمط معين:
SQL: لقواعد البيانات التي تحتوي على بيانات مهيكلة وتتبع نموذج علائقي.
NoSQL: لقواعد البيانات التي تحتاج إلى التعامل مع بيانات غير مهيكلة أو علاقات معقدة.
NewSQL: لمزيج بين SQL و NoSQL يعالج البيانات المعقدة والمهيكلة معًا.
Time-series databases: لقواعد البيانات المصممة خصيصًا للتعامل مع بيانات ذات طابع زمني مثل بيانات أجهزة الاستشعار.
3. حجم البيانات (Datasize?)
يعتمد اختيار قاعدة البيانات أيضًا على حجم البيانات الحالي والمتوقع مستقبلاً:
Now (حاليًا): إذا كان حجم البيانات المتوقع صغير أو متوسط.
Long Term (طويل الأجل): إذا كنت تتوقع زيادة كبيرة في حجم البيانات مستقبلًا، ستحتاج إلى قاعدة بيانات قابلة للتوسع.
4. عدد المستخدمين المتزامنين (Concurrent Users?)
إذا كنت تتوقع عدد كبير من المستخدمين المتزامنين على النظام، يجب أن يكون لديك قاعدة بيانات تدعم زيادة الطلبات:
Off-Peak (خارج الذروة): في أوقات عدم الضغط يمكن استخدام تكتيكات أقل في الأداء.
Peak (أوقات الذروة): في أوقات الضغط العالي تحتاج إلى استخدام تكتيكات مثل الشاردينج (Sharding) لتوزيع الحمل.
5. الأولوية للكتابة أم القراءة؟ (Write/Read Heavy?)
Write Heavy (كتابة مكثفة): إذا كان النظام يعتمد بشكل كبير على إدخال البيانات (عمليات كتابة)، ستحتاج إلى تقنيات مثل Sharding لتوزيع البيانات.
Read Heavy (قراءة مكثفة): إذا كان النظام يعتمد بشكل أكبر على قراءة البيانات، استخدم تقنيات مثل Read Replicas لتوزيع القراءات، أو Caching لتسريع عملية الوصول للبيانات المخزنة.
6. الزمن المستغرق المقبول (Acceptable Latency?)
إذا كنت تحتاج إلى استجابة سريعة للنظام:
Query Optimization (تحسين الاستعلامات): تحسين الاستعلامات لزيادة السرعة وتقليل زمن الاستجابة.
Response Time (زمن الاستجابة): تقليل زمن الاستجابة باستخدام الجداول المجزأة والفهارس المحسنة.
7. الأمان (Security?)
لتأمين البيانات يجب النظر في:
Encryption (التشفير): تشفير البيانات أثناء النقل وفي الراحة.
Auditing (المراجعة): تتبع العمليات والأنشطة على قاعدة البيانات.
Access Control (التحكم في الوصول): إدارة الأذونات والتحكم في من يمكنه الوصول إلى البيانات.
8. الأدوات والتكنولوجيا (Tools & Technology?)
هل النظام يحتاج إلى دعم تقني معين مثل:
Cloud Providers (مزودي السحابة): هل تعمل على نظام سحابي؟
Cloud Native (نظام سحابي أصلي): هل قاعدة البيانات مصممة للعمل بكفاءة في بيئة سحابية؟
API & Libraries (واجهات برمجة التطبيقات والمكتبات): هل تحتاج إلى تكامل مع أدوات برمجية أخرى؟
9. الدعم (Support?)
Documentation (الوثائق): مدى توفر الوثائق والدروس والمصادر التعليمية.
Community (المجتمع): مدى دعم مجتمع المطورين لقاعدة البيانات.
Enterprise (الدعم المؤسسي): الدعم الفني المقدم من مزود قاعدة البيانات.
#الخلاصة:
هذه الخطوات توضح كيفية اختيار قاعدة البيانات الأنسب بناءً على نوع البيانات، العلاقات، حجم البيانات، عدد المستخدمين، حمل القراءة أو الكتابة، الزمن المستغرق المقبول، الأمان، الأدوات، والدعم. باتباع هذه الخطوات، يمكنك اتخاذ قرار مدروس حول اختيار قاعدة البيانات التي تناسب احتياجات مشروعك.
سأشرح الخطوات الواردة بالتفصيل:
1. تحديد نوع البيانات (Database?)
هنا يجب أن تفهم نوع البيانات التي ستتعامل معها:
Structured (مهيكلة): البيانات المهيكلة مثل الجداول التي تحتوي على صفوف وأعمدة.
Semi-Structured (شبه مهيكلة): البيانات التي تحتوي على نوع من التنظيم ولكنها ليست صارمة مثل JSON و XML.
Unstructured (غير مهيكلة): البيانات التي لا تحتوي على تنظيم مثل الصور والفيديوهات.
2. العلاقات أو الأنماط؟ (Pattern or Relationships?)
إذا كانت البيانات تحتوي على علاقات واضحة وتحتاج لنمط معين:
SQL: لقواعد البيانات التي تحتوي على بيانات مهيكلة وتتبع نموذج علائقي.
NoSQL: لقواعد البيانات التي تحتاج إلى التعامل مع بيانات غير مهيكلة أو علاقات معقدة.
NewSQL: لمزيج بين SQL و NoSQL يعالج البيانات المعقدة والمهيكلة معًا.
Time-series databases: لقواعد البيانات المصممة خصيصًا للتعامل مع بيانات ذات طابع زمني مثل بيانات أجهزة الاستشعار.
3. حجم البيانات (Datasize?)
يعتمد اختيار قاعدة البيانات أيضًا على حجم البيانات الحالي والمتوقع مستقبلاً:
Now (حاليًا): إذا كان حجم البيانات المتوقع صغير أو متوسط.
Long Term (طويل الأجل): إذا كنت تتوقع زيادة كبيرة في حجم البيانات مستقبلًا، ستحتاج إلى قاعدة بيانات قابلة للتوسع.
4. عدد المستخدمين المتزامنين (Concurrent Users?)
إذا كنت تتوقع عدد كبير من المستخدمين المتزامنين على النظام، يجب أن يكون لديك قاعدة بيانات تدعم زيادة الطلبات:
Off-Peak (خارج الذروة): في أوقات عدم الضغط يمكن استخدام تكتيكات أقل في الأداء.
Peak (أوقات الذروة): في أوقات الضغط العالي تحتاج إلى استخدام تكتيكات مثل الشاردينج (Sharding) لتوزيع الحمل.
5. الأولوية للكتابة أم القراءة؟ (Write/Read Heavy?)
Write Heavy (كتابة مكثفة): إذا كان النظام يعتمد بشكل كبير على إدخال البيانات (عمليات كتابة)، ستحتاج إلى تقنيات مثل Sharding لتوزيع البيانات.
Read Heavy (قراءة مكثفة): إذا كان النظام يعتمد بشكل أكبر على قراءة البيانات، استخدم تقنيات مثل Read Replicas لتوزيع القراءات، أو Caching لتسريع عملية الوصول للبيانات المخزنة.
6. الزمن المستغرق المقبول (Acceptable Latency?)
إذا كنت تحتاج إلى استجابة سريعة للنظام:
Query Optimization (تحسين الاستعلامات): تحسين الاستعلامات لزيادة السرعة وتقليل زمن الاستجابة.
Response Time (زمن الاستجابة): تقليل زمن الاستجابة باستخدام الجداول المجزأة والفهارس المحسنة.
7. الأمان (Security?)
لتأمين البيانات يجب النظر في:
Encryption (التشفير): تشفير البيانات أثناء النقل وفي الراحة.
Auditing (المراجعة): تتبع العمليات والأنشطة على قاعدة البيانات.
Access Control (التحكم في الوصول): إدارة الأذونات والتحكم في من يمكنه الوصول إلى البيانات.
8. الأدوات والتكنولوجيا (Tools & Technology?)
هل النظام يحتاج إلى دعم تقني معين مثل:
Cloud Providers (مزودي السحابة): هل تعمل على نظام سحابي؟
Cloud Native (نظام سحابي أصلي): هل قاعدة البيانات مصممة للعمل بكفاءة في بيئة سحابية؟
API & Libraries (واجهات برمجة التطبيقات والمكتبات): هل تحتاج إلى تكامل مع أدوات برمجية أخرى؟
9. الدعم (Support?)
Documentation (الوثائق): مدى توفر الوثائق والدروس والمصادر التعليمية.
Community (المجتمع): مدى دعم مجتمع المطورين لقاعدة البيانات.
Enterprise (الدعم المؤسسي): الدعم الفني المقدم من مزود قاعدة البيانات.
❤6👍1