Index: iknow-api/DTOs/UserDTO.cs
===================================================================
--- iknow-api/DTOs/UserDTO.cs	(revision 35924766238e487b4af38d5827bdcda86852bd88)
+++ iknow-api/DTOs/UserDTO.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -33,5 +33,5 @@
         public int enrollmentYear { get; set; }
         public Quota quotaType { get; set; }
-        public Major majorType { get; set; }
+        public int majorType { get; set; }
 
     }
Index: iknow-api/Data/AppDbContext.cs
===================================================================
--- iknow-api/Data/AppDbContext.cs	(revision 35924766238e487b4af38d5827bdcda86852bd88)
+++ iknow-api/Data/AppDbContext.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -14,4 +14,120 @@
         public DbSet<EnrollmentInfo> EnrollmentInfo { get; set; }
         public DbSet<RefreshToken> RefreshToken { get; set; }
+
+        public DbSet<Subject> Subjects { get; set; }
+        public DbSet<DependencySubject> DependencySubjects { get; set; }
+
+
+        protected override void OnModelCreating(ModelBuilder modelBuilder)
+        {
+            base.OnModelCreating(modelBuilder);
+
+            // -------------------------
+            // DependencySubject (self-referencing many-to-many)
+            // -------------------------
+            modelBuilder.Entity<DependencySubject>()
+                .HasKey(ds => new { ds.SubjectId, ds.DependencyId });
+
+            modelBuilder.Entity<DependencySubject>()
+                .HasOne(ds => ds.Subject)
+                .WithMany(s => s.Dependencies)
+                .HasForeignKey(ds => ds.SubjectId)
+                .OnDelete(DeleteBehavior.Restrict);
+
+            modelBuilder.Entity<DependencySubject>()
+                .HasOne(ds => ds.Dependency)
+                .WithMany(s => s.Dependents)
+                .HasForeignKey(ds => ds.DependencyId)
+                .OnDelete(DeleteBehavior.Restrict);
+
+            // -------------------------
+            // MajorSubjects (many-to-many)
+            // -------------------------
+            modelBuilder.Entity<MajorSubjects>()
+                .HasKey(ab => new { ab.MajorId, ab.SubjectId });
+
+            modelBuilder.Entity<MajorSubjects>()
+                .HasOne(ab => ab.Majors)
+                .WithMany(a => a.Subjects)
+                .HasForeignKey(ab => ab.MajorId)
+                .OnDelete(DeleteBehavior.Cascade);
+
+            modelBuilder.Entity<MajorSubjects>()
+                .HasOne(ab => ab.Subjects)
+                .WithMany(b => b.Majors)
+                .HasForeignKey(ab => ab.SubjectId)
+                .OnDelete(DeleteBehavior.Cascade);
+
+            // -------------------------
+            // UserDocuments (many-to-many)
+            // -------------------------
+            modelBuilder.Entity<UserDocuments>()
+                .HasKey(ab => new { ab.UserId, ab.DocumentId });
+
+            modelBuilder.Entity<UserDocuments>()
+                .HasOne(ab => ab.User)
+                .WithMany(a => a.Documents)
+                .HasForeignKey(ab => ab.UserId)
+                .OnDelete(DeleteBehavior.Cascade);
+
+            modelBuilder.Entity<UserDocuments>()
+                .HasOne(ab => ab.Documents)
+                .WithMany(b => b.User)
+                .HasForeignKey(ab => ab.DocumentId)
+                .OnDelete(DeleteBehavior.Cascade);
+
+            // -------------------------
+            // Payment (user enrollment)
+            // -------------------------
+            modelBuilder.Entity<Payment>()
+                .HasKey(ab => new { ab.UserId, ab.EnrollmentInfoId });
+
+            modelBuilder.Entity<Payment>()
+                .HasOne(ab => ab.User)
+                .WithMany(a => a.EnrolledSemesters)
+                .HasForeignKey(ab => ab.UserId)
+                .OnDelete(DeleteBehavior.Cascade);
+
+            modelBuilder.Entity<Payment>()
+                .HasOne(ab => ab.EnrolledSemesters)
+                .WithMany(b => b.Users)
+                .HasForeignKey(ab => ab.EnrollmentInfoId)
+                .OnDelete(DeleteBehavior.Cascade);
+
+            // -------------------------
+            // SemesterSubject (student enrollments and professor assignments)
+            // -------------------------
+            modelBuilder.Entity<SemesterSubject>()
+                .HasKey(ss => ss.Id); // or composite key if you prefer {UserId, EnrolledSemesterId, SubjectId}
+
+            // Student enrollment
+            modelBuilder.Entity<SemesterSubject>()
+                .HasOne(ss => ss.User)
+                .WithMany(u => u.EnrolledSemesterUserSubjects)
+                .HasForeignKey(ss => ss.UserId)
+                .OnDelete(DeleteBehavior.Restrict);
+
+            // Professor teaching
+            modelBuilder.Entity<SemesterSubject>()
+                .HasOne(ss => ss.Professor)
+                .WithMany(u => u.TeachingSubjects)
+                .HasForeignKey(ss => ss.ProfessorId)
+                .OnDelete(DeleteBehavior.Restrict);
+
+            // Subject relation
+            modelBuilder.Entity<SemesterSubject>()
+                .HasOne(ss => ss.Subject)
+                .WithMany(s => s.SemesterSubjects)
+                .HasForeignKey(ss => ss.SubjectId)
+                .OnDelete(DeleteBehavior.Restrict);
+
+            // EnrolledSemester relation
+            modelBuilder.Entity<SemesterSubject>()
+                .HasOne(ss => ss.EnrolledSemester)
+                .WithMany(es => es.SemesterSubjects)
+                .HasForeignKey(ss => ss.EnrolledSemesterId)
+                .OnDelete(DeleteBehavior.Restrict);
+        }
+
     }
 }
Index: iknow-api/Models/DependencySubject.cs
===================================================================
--- iknow-api/Models/DependencySubject.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Models/DependencySubject.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -0,0 +1,10 @@
+namespace iknow_api.Models
+{
+    public class DependencySubject
+    {
+        public int SubjectId { get; set; }
+        public int DependencyId { get; set; }
+        public Subject? Subject { get; set; }
+        public Subject? Dependency { get; set; }
+    }
+}
Index: iknow-api/Models/Documents.cs
===================================================================
--- iknow-api/Models/Documents.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Models/Documents.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -0,0 +1,11 @@
+namespace iknow_api.Models
+{
+    public class Documents
+    {
+        public int Id { get; set; }
+        public string? name { get; set; }
+        public string? body { get; set; }
+        public int cost { get; set; }
+        public ICollection<UserDocuments>? User { get; set; }
+    }
+}
Index: iknow-api/Models/EnrolledSemesters.cs
===================================================================
--- iknow-api/Models/EnrolledSemesters.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Models/EnrolledSemesters.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -0,0 +1,22 @@
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace iknow_api.Models
+{
+    public enum Type
+    {
+        Winter, Summer
+    }
+    public class EnrolledSemesters
+    {
+        public int Id { get; set; }
+        public int UserId { get; set; }
+        public User? User { get; set; }
+        public int Year { get; set; }
+        public int Type { get; set; }
+        public Quota QuotaType { get; set; }
+        public int MajorId { get; set; }
+        public Major? Major { get; set; }
+        public ICollection<Payment>? Users { get; set; }
+        public ICollection<SemesterSubject>? SemesterSubjects { get; set; }
+    }
+}
Index: iknow-api/Models/EnrollmentInfo.cs
===================================================================
--- iknow-api/Models/EnrollmentInfo.cs	(revision 35924766238e487b4af38d5827bdcda86852bd88)
+++ iknow-api/Models/EnrollmentInfo.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -7,8 +7,4 @@
         drzavna, privatna, stipendija
     }
-    public enum Major
-    {
-        SIIS, PIT, KN, KI, IMB, IE, SSP, SEIS
-    }
     public class EnrollmentInfo
     {
@@ -16,7 +12,9 @@
         public int enrollmentYear { get; set; }
         public Quota quota;
-        public Major major { get; set; }
+        public int MajorId { get; set; }
+        public Major? Major { get; set; }
         public int UserId { get; set; }
         public User? User { get; set; }
+
     }
 }
Index: iknow-api/Models/Major.cs
===================================================================
--- iknow-api/Models/Major.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Models/Major.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -0,0 +1,12 @@
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace iknow_api.Models
+{
+    public class Major
+    {
+        public int Id { get; set; }
+
+        public string? Name { get; set; }
+        public ICollection<MajorSubjects>? Subjects { get; set; }
+    }
+}
Index: iknow-api/Models/MajorSubjects.cs
===================================================================
--- iknow-api/Models/MajorSubjects.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Models/MajorSubjects.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -0,0 +1,12 @@
+namespace iknow_api.Models
+{
+    public class MajorSubjects
+    {
+        public int MajorId { get; set; }
+        public int SubjectId { get; set; }
+        public int MandatorySemester { get; set; }
+        public int Akreditacija { get; set; }
+        public Major? Majors { get; set; }
+        public Subject? Subjects { get; set; }
+    }
+}
Index: iknow-api/Models/Payment.cs
===================================================================
--- iknow-api/Models/Payment.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Models/Payment.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -0,0 +1,15 @@
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace iknow_api.Models
+{
+    public class Payment
+    {
+        public int Id { get; set; }
+
+        public int UserId { get; set; }
+        public User? User { get; set; }
+        public int EnrollmentInfoId { get; set; }
+        public EnrolledSemesters? EnrolledSemesters { get; set; }
+
+    }
+}
Index: iknow-api/Models/SemesterSubjects.cs
===================================================================
--- iknow-api/Models/SemesterSubjects.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Models/SemesterSubjects.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -0,0 +1,17 @@
+namespace iknow_api.Models
+{
+    public class SemesterSubject
+    {
+        public int Id { get; set; } 
+        
+        public int UserId { get; set; }                 
+        public int EnrolledSemesterId { get; set; }
+        public int SubjectId { get; set; }
+        public int ProfessorId { get; set; }
+        
+        public User? User { get; set; }                 
+        public EnrolledSemesters? EnrolledSemester { get; set; }
+        public Subject? Subject { get; set; }
+        public User? Professor { get; set; }           
+    }
+}
Index: iknow-api/Models/Subjects.cs
===================================================================
--- iknow-api/Models/Subjects.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Models/Subjects.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -0,0 +1,15 @@
+namespace iknow_api.Models
+{
+    public class Subject
+    {
+        public int Id { get; set; }                       
+        public string? Name { get; set; }                 
+        public string? Code { get; set; }                  
+        public int? AwardedCredits { get; set; } 
+        public int? DependencyCredit { get; set; }
+        public ICollection<DependencySubject>? Dependencies { get; set; }   
+        public ICollection<DependencySubject>? Dependents { get; set; }
+        public ICollection<MajorSubjects>? Majors { get; set; }
+        public ICollection<SemesterSubject>? SemesterSubjects { get; set; }
+    }
+}
Index: iknow-api/Models/User.cs
===================================================================
--- iknow-api/Models/User.cs	(revision 35924766238e487b4af38d5827bdcda86852bd88)
+++ iknow-api/Models/User.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -25,4 +25,9 @@
         public ContactInfo? ContactInfo { get; set; }
         public EnrollmentInfo? EnrollmentInfo { get; set; }
+        public ICollection<UserDocuments>? Documents { get; set; }
+        public ICollection<Payment>? EnrolledSemesters { get; set; }
+        public ICollection<SemesterSubject>? EnrolledSemesterUserSubjects { get; set; }
+
+        public ICollection<SemesterSubject>? TeachingSubjects { get; set; }
 
     }
Index: iknow-api/Models/UserDocuments.cs
===================================================================
--- iknow-api/Models/UserDocuments.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
+++ iknow-api/Models/UserDocuments.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -0,0 +1,10 @@
+namespace iknow_api.Models
+{
+    public class UserDocuments
+    {
+        public int UserId { get; set; }
+        public int DocumentId { get; set; }
+        public User? User{ get; set; }
+        public Documents? Documents{ get; set; }
+    }
+}
Index: iknow-api/Services/Implementations/AuthService.cs
===================================================================
--- iknow-api/Services/Implementations/AuthService.cs	(revision 35924766238e487b4af38d5827bdcda86852bd88)
+++ iknow-api/Services/Implementations/AuthService.cs	(revision a92a2a413484ff7d4eb9ff6632fcabdffe2b36f4)
@@ -62,5 +62,5 @@
                 enrollmentYear = registerDto.enrollmentYear,
                 quota = (Models.Quota)registerDto.quotaType,
-                major = (Models.Major)registerDto.majorType
+                MajorId = registerDto.majorType
             };
             await _userRepository.AddEnrollmentAsync(enrollmentInfo);
