پروژه پایگاه داده

پروژه sql

توسط admin | گروه SQL Server | 1403/08/01

نظرات 0

در این سیستم، هدف طراحی یک سیستم مدیریت نمرات برای دانش‌آموزان است. این سیستم شامل ۷ جدول می‌شود که هر کدام نمایانگر بخش‌های مختلف مدیریت اطلاعات دانش‌آموزان و نمرات آن‌ها است. برای هر جدول توضیحاتی به صورت کامنت فارسی در اسکریپت SQL قرار داده شده تا مفهوم هر فیلد و جدول مشخص باشد. همچنین کوئری‌ها، ویوها، پروسیجرها، تریگرها و فانکشن‌هایی که برای این سیستم نیاز است نیز طراحی شده و به همراه داده‌های نمونه درون جداول قرار گرفته است.

۱. توضیحات کلی سیستم

این سیستم اطلاعات مربوط به دانش‌آموزان، دروس، اساتید، کلاس‌ها و نمرات آن‌ها را مدیریت می‌کند. جداول این سیستم به شرح زیر هستند:

  • Students: اطلاعات دانش‌آموزان
  • Courses: اطلاعات دروس
  • Teachers: اطلاعات اساتید
  • Classes: اطلاعات کلاس‌ها
  • Grades: نمرات دانش‌آموزان
  • Departments: دپارتمان‌های آموزشی
  • Student_Course: جداول ارتباطی بین دانش‌آموزان و دروس که برای نگهداری داده‌های ثبت‌نام در دروس مختلف استفاده می‌شود.

۲. اسکریپت کامل طراحی جداول، ویوها، پروسیجرها و تریگرها به همراه داده‌های نمونه

کد sql
 
-- ایجاد جدول دانش‌آموزان CREATE TABLE Students ( StudentID INT PRIMARY KEY, -- شناسه دانش‌آموز FirstName NVARCHAR(50), -- نام دانش‌آموز LastName NVARCHAR(50), -- نام خانوادگی دانش‌آموز BirthDate DATE, -- تاریخ تولد DepartmentID INT -- شناسه دپارتمان ); -- ایجاد جدول دروس CREATE TABLE Courses ( CourseID INT PRIMARY KEY, -- شناسه درس CourseName NVARCHAR(100), -- نام درس Credits INT -- تعداد واحدهای درس ); -- ایجاد جدول اساتید CREATE TABLE Teachers ( TeacherID INT PRIMARY KEY, -- شناسه استاد FirstName NVARCHAR(50), -- نام استاد LastName NVARCHAR(50) -- نام خانوادگی استاد ); -- ایجاد جدول کلاس‌ها CREATE TABLE Classes ( ClassID INT PRIMARY KEY, -- شناسه کلاس CourseID INT, -- شناسه درس TeacherID INT, -- شناسه استاد ClassTime DATETIME -- زمان کلاس ); -- ایجاد جدول نمرات CREATE TABLE Grades ( GradeID INT PRIMARY KEY, -- شناسه نمره StudentID INT, -- شناسه دانش‌آموز ClassID INT, -- شناسه کلاس Grade DECIMAL(18, 2) -- نمره دانش‌آموز ); -- ایجاد جدول دپارتمان‌ها CREATE TABLE Departments ( DepartmentID INT PRIMARY KEY, -- شناسه دپارتمان DepartmentName NVARCHAR(100) -- نام دپارتمان ); -- ایجاد جدول ارتباطی بین دانش‌آموزان و دروس (ثبت‌نام دروس) CREATE TABLE Student_Course ( StudentID INT, -- شناسه دانش‌آموز CourseID INT, -- شناسه درس EnrollDate DATE, -- تاریخ ثبت‌نام PRIMARY KEY(StudentID, CourseID) ); -- درج چندین رکورد نمونه در جداول INSERT INTO Students (StudentID, FirstName, LastName, BirthDate, DepartmentID) VALUES (1, 'Ali', 'Ahmadi', '2000-05-15', 1), (2, 'Sara', 'Karimi', '2001-07-10', 2); INSERT INTO Courses (CourseID, CourseName, Credits) VALUES (101, 'Mathematics', 3), (102, 'Physics', 4); INSERT INTO Teachers (TeacherID, FirstName, LastName) VALUES (1, 'Reza', 'Mohammadi'), (2, 'Maryam', 'Jafari'); INSERT INTO Classes (ClassID, CourseID, TeacherID, ClassTime) VALUES (1, 101, 1, '2024-10-01 08:00:00'), (2, 102, 2, '2024-10-02 10:00:00'); INSERT INTO Grades (GradeID, StudentID, ClassID, Grade) VALUES (1, 1, 1, 18.5), (2, 2, 2, 17.0); INSERT INTO Departments (DepartmentID, DepartmentName) VALUES (1, 'Science'), (2, 'Engineering'); INSERT INTO Student_Course (StudentID, CourseID, EnrollDate) VALUES (1, 101, '2024-09-15'), (2, 102, '2024-09-16'); -- ایجاد ویو برای مشاهده نمرات به همراه اطلاعات دانش‌آموزان و دروس CREATE VIEW StudentGrades AS SELECT s.FirstName, s.LastName, c.CourseName, g.Grade FROM Students s JOIN Grades g ON s.StudentID = g.StudentID JOIN Classes cl ON g.ClassID = cl.ClassID JOIN Courses c ON cl.CourseID = c.CourseID; -- ایجاد پروسیجر برای درج نمرات جدید CREATE PROCEDURE InsertGrade @StudentID INT, @ClassID INT, @Grade DECIMAL(18, 2) AS BEGIN INSERT INTO Grades (StudentID, ClassID, Grade) VALUES (@StudentID, @ClassID, @Grade); END; -- ایجاد تریگر برای ثبت تاریخ آخرین به‌روزرسانی نمرات در یک جدول جدید CREATE TRIGGER UpdateGradeLog ON Grades AFTER UPDATE AS BEGIN DECLARE @StudentID INT, @ClassID INT; SELECT @StudentID = INSERTED.StudentID, @ClassID = INSERTED.ClassID FROM INSERTED; -- فرض کنید که جدولی به نام GradeUpdates برای ثبت تاریخ به‌روزرسانی نمرات وجود دارد INSERT INTO GradeUpdates (StudentID, ClassID, UpdateDate) VALUES (@StudentID, @ClassID, GETDATE()); END; -- ایجاد فانکشن برای محاسبه میانگین نمرات یک دانش‌آموز CREATE FUNCTION GetAverageGrade (@StudentID INT) RETURNS DECIMAL(18, 2) AS BEGIN DECLARE @AverageGrade DECIMAL(18, 2); SELECT @AverageGrade = AVG(Grade) FROM Grades WHERE StudentID = @StudentID; RETURN @AverageGrade; END; -- استفاده از فانکشن برای نمایش میانگین نمرات یک دانش‌آموز SELECT dbo.GetAverageGrade(1) AS AverageGrade;

۳. توضیحات جداول و فیلدها:

  • Students: این جدول اطلاعات پایه‌ای دانش‌آموزان را نگه‌داری می‌کند. شامل شناسه، نام، نام خانوادگی، تاریخ تولد و دپارتمان مربوطه است.
  • Courses: جدول دروس شامل شناسه درس، نام درس و تعداد واحدها است.
  • Teachers: این جدول اطلاعات اساتید را نگه‌داری می‌کند.
  • Classes: جدول کلاس‌ها شامل اطلاعات زمان برگزاری کلاس، درس مربوطه و استاد مربوط به آن است.
  • Grades: جدول نمرات شامل شناسه نمره، شناسه دانش‌آموز، شناسه کلاس و نمره آن‌ها است.
  • Departments: جدول دپارتمان‌ها شامل شناسه و نام دپارتمان‌های مختلف است.
  • Student_Course: جدول ارتباطی بین دانش‌آموزان و دروس که برای ثبت‌نام استفاده می‌شود.

۴. داده‌های نمونه

داده‌های نمونه درج شده در جداول، اطلاعات چند دانش‌آموز، درس، استاد و نمره را نمایش می‌دهد که قابل استفاده و نمایش در کوئری‌ها و ویوها هستند.

 

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر