title: The best way to have many types of user in the same database
body: <p>I building an app with 5 different users, and each user have different fields. What is the best way to model the database? im creating one table for each user, is the best way or exist another different way like put all in one table? Im not talking about performance, just the best way to organize.</p>
  <p>Look what i have:</p>
  <pre><code>  model CoordinatorProfile {
      id String @id @default(uuid())
  
      name String @db.VarChar(255)
  
      image   Image?  @relation(fields: [imageId], references: [id])
      imageId String? @unique
  
      school School?
      user   User?
  
      createdAt DateTime @default(now()) @db.Timestamp
      updatedAt DateTime @updatedAt @db.Timestamp
      deleted   Boolean  @default(false) @db.Boolean
    }
  
    model TeacherProfile {
      id String @id @default(uuid())
  
      name String @db.VarChar(255)
  
      image   Image?  @relation(fields: [imageId], references: [id])
      imageId String? @unique
  
      school   School @relation(fields: [schoolId], references: [id])
      schoolId String @unique
  
      team Team[]
      user User?
  
      createdAt DateTime @default(now()) @db.Timestamp
      updatedAt DateTime @updatedAt @db.Timestamp
      deleted   Boolean  @default(false) @db.Boolean
    }
  
    model StudentProfile {
      id String @id @default(uuid())
  
      name String @db.VarChar(255)
  
      image   Image?  @relation(fields: [imageId], references: [id])
      imageId String? @unique
  
      school   School @relation(fields: [schoolId], references: [id])
      schoolId String @unique
  
      team   Team?   @relation(fields: [teamId], references: [id])
      teamId String?
  
      user User?
      text Text[]
  
      createdAt DateTime @default(now()) @db.Timestamp
      updatedAt DateTime @updatedAt @db.Timestamp
      deleted   Boolean  @default(false) @db.Boolean
    }
  
    model User {
      id String @id @default(uuid())
  
      email        String   @unique @db.VarChar(255)
      password     String   @db.VarChar(255)
      access_until DateTime @db.Timestamp
  
      student_profile  StudentProfile? @relation(fields: [studentProfileId], references: [id])
      studentProfileId String?         @unique
  
      corrector_profile  CorrectorProfile? @relation(fields: [correctorProfileId], references: [id])
      correctorProfileId String?           @unique
  
      coordinator_profile  CoordinatorProfile? @relation(fields: [coordinatorProfileId], references: [id])
      coordinatorProfileId String?             @unique
  
      teacher_profile  TeacherProfile? @relation(fields: [teacherProfileId], references: [id])
      teacherProfileId String?         @unique
  
      roles Role[]
  
      createdAt DateTime @default(now()) @db.Timestamp
      updatedAt DateTime @updatedAt @db.Timestamp
      deleted   Boolean  @default(false) @db.Boolean
    }
  
    enum Role {
      Estudante
      Administrador
      Professor
      Corrector
      Coordenador
    }
  </code></pre>