اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر (معدل)

تفضل استاذ @أحمد محمد اسماعيل عامر .:fff:

إنشاء قاعدة بيانات لشركة مقاولات بلغة SQL

كيفية إنشاء قاعدة بيانات SQL لشركة مقاولات خطوة بخطوة

1. تثبيت نظام إدارة قواعد البيانات (DBMS)

  • يمكنك استخدام:

    • Microsoft SQL Server (مع SQL Server Management Studio)

    • MySQL (مع MySQL Workbench)

    • PostgreSQL (مع pgAdmin)

2. إنشاء قاعدة البيانات

CREATE DATABASE ConstructionCompany;
GO
USE ConstructionCompany;
GO

3. إنشاء الجداول الأساسية أولاً

ابدأ بالجداول التي لا تعتمد على جداول أخرى:

sql
-- جدول العملاء
CREATE TABLE Clients (
    ClientID INT PRIMARY KEY IDENTITY(1,1),
    CompanyName NVARCHAR(100) NOT NULL,
    ContactPerson NVARCHAR(100),
    PhoneNumber NVARCHAR(20) NOT NULL,
    Email NVARCHAR(100),
    Address NVARCHAR(200),
    TaxNumber NVARCHAR(50),
    RegistrationDate DATE NOT NULL
);

-- جدول الموردين
CREATE TABLE Suppliers (
    SupplierID INT PRIMARY KEY IDENTITY(1,1),
    SupplierName NVARCHAR(100) NOT NULL,
    ContactPerson NVARCHAR(100),
    PhoneNumber NVARCHAR(20) NOT NULL,
    Email NVARCHAR(100),
    Address NVARCHAR(200),
    TaxNumber NVARCHAR(50)
);

-- جدول الأقسام
CREATE TABLE Departments (
    DepartmentID INT PRIMARY KEY IDENTITY(1,1),
    DepartmentName NVARCHAR(50) NOT NULL,
    Location NVARCHAR(100),
    Budget DECIMAL(15,2)
);

4. إنشاء الجداول ذات العلاقات

بعد إنشاء الجداول الأساسية، أنشئ الجداول التي تحتوي على مفاتيح أجنبية:

 
-- جدول الموظفين (يعتمد على Departments)
CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY IDENTITY(1,1),
    FirstName NVARCHAR(50) NOT NULL,
    LastName NVARCHAR(50) NOT NULL,
    NationalID NVARCHAR(20) UNIQUE NOT NULL,
    BirthDate DATE,
    Gender CHAR(1) CHECK (Gender IN ('M', 'F')),
    Address NVARCHAR(100),
    PhoneNumber NVARCHAR(20),
    Email NVARCHAR(100),
    HireDate DATE NOT NULL,
    Position NVARCHAR(50) NOT NULL,
    Salary DECIMAL(15,2) NOT NULL,
    DepartmentID INT,
    ManagerID INT,
    CONSTRAINT FK_Employee_Department FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID),
    CONSTRAINT FK_Employee_Manager FOREIGN KEY (ManagerID) REFERENCES Employees(EmployeeID)
);

-- تحديث جدول الأقسام لإضافة مدير القسم
ALTER TABLE Departments
ADD ManagerID INT,
CONSTRAINT FK_Department_Manager FOREIGN KEY (ManagerID) REFERENCES Employees(EmployeeID);

5. إنشاء بقية الجداول

-- جدول المشاريع (يعتمد على Clients وEmployees)
CREATE TABLE Projects (
    ProjectID INT PRIMARY KEY IDENTITY(1,1),
    ProjectName NVARCHAR(100) NOT NULL,
    Description NVARCHAR(500),
    StartDate DATE NOT NULL,
    EndDate DATE,
    EstimatedBudget DECIMAL(15,2) NOT NULL,
    ActualCost DECIMAL(15,2),
    ClientID INT NOT NULL,
    ProjectManagerID INT NOT NULL,
    Status NVARCHAR(20) CHECK (Status IN ('Planning', 'In Progress', 'On Hold', 'Completed', 'Cancelled')),
    CONSTRAINT FK_Project_Client FOREIGN KEY (ClientID) REFERENCES Clients(ClientID),
    CONSTRAINT FK_Project_Manager FOREIGN KEY (ProjectManagerID) REFERENCES Employees(EmployeeID)
);

-- جدول المعدات
CREATE TABLE Equipment (
    EquipmentID INT PRIMARY KEY IDENTITY(1,1),
    EquipmentName NVARCHAR(100) NOT NULL,
    Description NVARCHAR(500),
    PurchaseDate DATE NOT NULL,
    PurchaseCost DECIMAL(15,2) NOT NULL,
    CurrentValue DECIMAL(15,2),
    Status NVARCHAR(20) CHECK (Status IN ('Available', 'In Use', 'Under Maintenance', 'Retired')),
    MaintenanceSchedule NVARCHAR(100)
);

-- جدول المواد (يعتمد على Suppliers)
CREATE TABLE Materials (
    MaterialID INT PRIMARY KEY IDENTITY(1,1),
    MaterialName NVARCHAR(100) NOT NULL,
    Description NVARCHAR(500),
    Unit NVARCHAR(20) NOT NULL,
    UnitPrice DECIMAL(15,2) NOT NULL,
    QuantityInStock DECIMAL(15,2) DEFAULT 0,
    SupplierID INT,
    CONSTRAINT FK_Material_Supplier FOREIGN KEY (SupplierID) REFERENCES Suppliers(SupplierID)
);

6. إنشاء جداول العلاقات

-- جدول استخدام المعدات في المشاريع
CREATE TABLE ProjectEquipment (
    ProjectEquipmentID INT PRIMARY KEY IDENTITY(1,1),
    ProjectID INT NOT NULL,
    EquipmentID INT NOT NULL,
    StartDate DATE NOT NULL,
    EndDate DATE,
    Notes NVARCHAR(500),
    CONSTRAINT FK_ProjectEquipment_Project FOREIGN KEY (ProjectID) REFERENCES Projects(ProjectID),
    CONSTRAINT FK_ProjectEquipment_Equipment FOREIGN KEY (EquipmentID) REFERENCES Equipment(EquipmentID)
);

-- جدول استخدام المواد في المشاريع
CREATE TABLE ProjectMaterials (
    ProjectMaterialID INT PRIMARY KEY IDENTITY(1,1),
    ProjectID INT NOT NULL,
    MaterialID INT NOT NULL,
    QuantityUsed DECIMAL(15,2) NOT NULL,
    UsageDate DATE NOT NULL,
    CONSTRAINT FK_ProjectMaterial_Project FOREIGN KEY (ProjectID) REFERENCES Projects(ProjectID),
    CONSTRAINT FK_ProjectMaterial_Material FOREIGN KEY (MaterialID) REFERENCES Materials(MaterialID)
);

7. تنفيذ البرنامج النصي

  1. افتح أداة إدارة قواعد البيانات (مثل SQL Server Management Studio)

  2. انقر على "New Query"

  3. الصق الكود السابق

  4. انقر على "Execute" أو اضغط F5

نصائح إضافية:

  • احفظ البرنامج النصي كملف .sql للنسخ الاحتياطي

  • يمكنك إضافة بيانات أولية باستخدام عبارات INSERT

  • يمكنك تعديل التصميم حسب احتياجات شركتك المحددة

  • استخدم الأوامر ALTER TABLE لإجراء تغييرات لاحقة على الهيكل

ملاحظات:

  1. هذا التصميم يوفر الهيكل الأساسي لقاعدة بيانات شركة مقاولات.

  2. يمكنك تعديل الجداول والحقول حسب احتياجات الشركة المحددة.

  3. تم تضمين العلاقات الأساسية بين الجداول.

  4. تم إضافة بعض القيود (Constraints) لضمان سلامة البيانات.

  5. يمكنك إضافة المزيد من الجداول أو الحقول حسب الحاجة مثل جداول العقود، الفواتير، الضرائب، إلخ

تم تعديل بواسطه kkhalifa1960

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information