diff --git a/prisma/migrations/20231121035607_added_tables/migration.sql b/prisma/migrations/20231121035607_added_tables/migration.sql
new file mode 100644
index 0000000000000000000000000000000000000000..c9c0006c9c67286a7a8f92f2077c79f898cb7cff
--- /dev/null
+++ b/prisma/migrations/20231121035607_added_tables/migration.sql
@@ -0,0 +1,147 @@
+-- CreateTable
+CREATE TABLE "User" (
+    "idUser" SERIAL NOT NULL,
+    "username" TEXT NOT NULL,
+    "password" TEXT NOT NULL,
+    "status" TEXT NOT NULL,
+
+    CONSTRAINT "User_pkey" PRIMARY KEY ("idUser")
+);
+
+-- CreateTable
+CREATE TABLE "Student" (
+    "idStudent" SERIAL NOT NULL,
+    "namaSiswa" TEXT NOT NULL,
+    "kelasSiswa" INTEGER NOT NULL,
+    "umurSiswaa" INTEGER NOT NULL,
+    "noTelpSiswa" TEXT NOT NULL,
+    "alamatSiswa" TEXT NOT NULL,
+
+    CONSTRAINT "Student_pkey" PRIMARY KEY ("idStudent")
+);
+
+-- CreateTable
+CREATE TABLE "VehicleType" (
+    "idKen" SERIAL NOT NULL,
+    "namaKen" TEXT NOT NULL,
+    "jenisKen" TEXT NOT NULL,
+
+    CONSTRAINT "VehicleType_pkey" PRIMARY KEY ("idKen")
+);
+
+-- CreateTable
+CREATE TABLE "DrivingClass" (
+    "idClass" SERIAL NOT NULL,
+    "namaKelas" TEXT NOT NULL,
+    "hargaKelas" INTEGER NOT NULL,
+    "totalJam" INTEGER NOT NULL,
+    "jmlSesi" INTEGER NOT NULL,
+    "idKendaraan" INTEGER NOT NULL,
+
+    CONSTRAINT "DrivingClass_pkey" PRIMARY KEY ("idClass")
+);
+
+-- CreateTable
+CREATE TABLE "Vehicle" (
+    "platKen" TEXT NOT NULL DEFAULT 'X XXX XX',
+    "lastService" TIMESTAMP(3) NOT NULL,
+    "jmlKm" INTEGER NOT NULL,
+    "statusKen" TEXT NOT NULL,
+    "idKendaraan" INTEGER NOT NULL,
+
+    CONSTRAINT "Vehicle_pkey" PRIMARY KEY ("platKen")
+);
+
+-- CreateTable
+CREATE TABLE "Schedule" (
+    "idJadwal" SERIAL NOT NULL,
+    "hari" TEXT NOT NULL,
+    "sesi" INTEGER NOT NULL,
+    "jamMulai" TIMESTAMP NOT NULL,
+    "jamSelesai" TIMESTAMP NOT NULL,
+
+    CONSTRAINT "Schedule_pkey" PRIMARY KEY ("idJadwal")
+);
+
+-- CreateTable
+CREATE TABLE "Instructor" (
+    "idInstruktur" SERIAL NOT NULL,
+    "namaIns" TEXT NOT NULL,
+    "nikIns" TEXT NOT NULL,
+    "alamatIns" TEXT NOT NULL,
+    "noTelpIns" TEXT NOT NULL,
+    "noRekIns" TEXT NOT NULL,
+
+    CONSTRAINT "Instructor_pkey" PRIMARY KEY ("idInstruktur")
+);
+
+-- CreateTable
+CREATE TABLE "InstructorClass" (
+    "idInstruktur" INTEGER NOT NULL,
+    "idClass" INTEGER NOT NULL,
+
+    CONSTRAINT "InstructorClass_pkey" PRIMARY KEY ("idInstruktur","idClass")
+);
+
+-- CreateTable
+CREATE TABLE "InstructorSched" (
+    "idInstruktur" INTEGER NOT NULL,
+    "idJadwal" INTEGER NOT NULL,
+
+    CONSTRAINT "InstructorSched_pkey" PRIMARY KEY ("idInstruktur","idJadwal")
+);
+
+-- CreateTable
+CREATE TABLE "StudentSched" (
+    "idStudent" INTEGER NOT NULL,
+    "idJadwal" INTEGER NOT NULL,
+
+    CONSTRAINT "StudentSched_pkey" PRIMARY KEY ("idStudent","idJadwal")
+);
+
+-- CreateTable
+CREATE TABLE "VehicleSched" (
+    "platKen" TEXT NOT NULL,
+    "idJadwal" INTEGER NOT NULL,
+
+    CONSTRAINT "VehicleSched_pkey" PRIMARY KEY ("platKen","idJadwal")
+);
+
+-- CreateIndex
+CREATE UNIQUE INDEX "User_username_key" ON "User"("username");
+
+-- CreateIndex
+CREATE UNIQUE INDEX "DrivingClass_namaKelas_key" ON "DrivingClass"("namaKelas");
+
+-- CreateIndex
+CREATE UNIQUE INDEX "Instructor_nikIns_key" ON "Instructor"("nikIns");
+
+-- AddForeignKey
+ALTER TABLE "DrivingClass" ADD CONSTRAINT "DrivingClass_idKendaraan_fkey" FOREIGN KEY ("idKendaraan") REFERENCES "VehicleType"("idKen") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "Vehicle" ADD CONSTRAINT "Vehicle_idKendaraan_fkey" FOREIGN KEY ("idKendaraan") REFERENCES "VehicleType"("idKen") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "InstructorClass" ADD CONSTRAINT "InstructorClass_idInstruktur_fkey" FOREIGN KEY ("idInstruktur") REFERENCES "Instructor"("idInstruktur") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "InstructorClass" ADD CONSTRAINT "InstructorClass_idClass_fkey" FOREIGN KEY ("idClass") REFERENCES "DrivingClass"("idClass") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "InstructorSched" ADD CONSTRAINT "InstructorSched_idInstruktur_fkey" FOREIGN KEY ("idInstruktur") REFERENCES "Instructor"("idInstruktur") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "InstructorSched" ADD CONSTRAINT "InstructorSched_idJadwal_fkey" FOREIGN KEY ("idJadwal") REFERENCES "Schedule"("idJadwal") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "StudentSched" ADD CONSTRAINT "StudentSched_idStudent_fkey" FOREIGN KEY ("idStudent") REFERENCES "Student"("idStudent") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "StudentSched" ADD CONSTRAINT "StudentSched_idJadwal_fkey" FOREIGN KEY ("idJadwal") REFERENCES "Schedule"("idJadwal") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "VehicleSched" ADD CONSTRAINT "VehicleSched_platKen_fkey" FOREIGN KEY ("platKen") REFERENCES "Vehicle"("platKen") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "VehicleSched" ADD CONSTRAINT "VehicleSched_idJadwal_fkey" FOREIGN KEY ("idJadwal") REFERENCES "Schedule"("idJadwal") ON DELETE RESTRICT ON UPDATE CASCADE;
diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml
new file mode 100644
index 0000000000000000000000000000000000000000..fbffa92c2bb7c748d6fc78f9f9dcac604dabb87d
--- /dev/null
+++ b/prisma/migrations/migration_lock.toml
@@ -0,0 +1,3 @@
+# Please do not edit this file manually
+# It should be added in your version-control system (i.e. Git)
+provider = "postgresql"
\ No newline at end of file
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 64b09b7280d011a6691acef763470470625d1427..8055ecee520ef6d2a7ec029670a26152b4456a62 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -10,18 +10,106 @@ datasource db {
   url      = env("DATABASE_URL")
 }
 
-model User{
-  idUser Int @id @default(autoincrement())
-  username String
+model User {
+  idUser   Int    @id @default(autoincrement())
+  username String @unique
   password String
-  status String
+  status   String
 }
 
-model Student{
-  idStudent Int @id @default(autoincrement())
-  namaSiswa String
-  kelasSiswa Int
-  umurSiswaa Int
-  noTelpSiswa String
-  alamatSiswa String
+model Student {
+  idStudent    Int            @id @default(autoincrement())
+  namaSiswa    String
+  kelasSiswa   Int
+  umurSiswaa   Int
+  noTelpSiswa  String
+  alamatSiswa  String
+  studentSched StudentSched[]
+}
+
+model VehicleType {
+  idKen        Int            @id @default(autoincrement())
+  namaKen      String
+  jenisKen     String
+  DrivingClass DrivingClass[]
+  Vehicle      Vehicle[]
+}
+
+model DrivingClass {
+  idClass         Int               @id @default(autoincrement())
+  namaKelas       String            @unique
+  hargaKelas      Int
+  totalJam        Int
+  jmlSesi         Int
+  vehicleType     VehicleType       @relation(fields: [idKendaraan], references: [idKen])
+  idKendaraan     Int
+  instructorClass InstructorClass[]
+}
+
+model Vehicle {
+  platKen      String         @id @default("X XXX XX")
+  lastService  DateTime
+  jmlKm        Int
+  statusKen    String
+  vehicleType  VehicleType    @relation(fields: [idKendaraan], references: [idKen])
+  idKendaraan  Int
+  vehicleSched VehicleSched[]
+}
+
+model Schedule {
+  idJadwal        Int               @id @default(autoincrement())
+  hari            String
+  sesi            Int
+  jamMulai        DateTime          @db.Timestamp()
+  jamSelesai      DateTime          @db.Timestamp()
+  instructorSched InstructorSched[]
+  studentSched    StudentSched[]
+  vehicleSched    VehicleSched[]
+}
+
+model Instructor {
+  idInstruktur    Int               @id @default(autoincrement())
+  namaIns         String
+  nikIns          String            @unique
+  alamatIns       String
+  noTelpIns       String
+  noRekIns        String
+  instructorClass InstructorClass[]
+  instructorSched InstructorSched[]
+}
+
+model InstructorClass {
+  instructor   Instructor   @relation(fields: [idInstruktur], references: [idInstruktur])
+  idInstruktur Int
+  drivingClass DrivingClass @relation(fields: [idClass], references: [idClass])
+  idClass      Int
+
+  @@id([idInstruktur, idClass])
+}
+
+model InstructorSched {
+  instructor   Instructor @relation(fields: [idInstruktur], references: [idInstruktur])
+  idInstruktur Int
+  schedule     Schedule   @relation(fields: [idJadwal], references: [idJadwal])
+  idJadwal     Int
+
+  @@id([idInstruktur, idJadwal])
+}
+
+model StudentSched {
+  student  Student  @relation(fields: [idStudent], references: [idStudent])
+  idStudent  Int
+  schedule Schedule @relation(fields: [idJadwal], references: [idJadwal])
+  idJadwal Int
+
+  @@id([idStudent, idJadwal])
+}
+
+model VehicleSched {
+  vehicle  Vehicle  @relation(fields: [platKen], references: [platKen])
+  platKen  String
+  schedule Schedule @relation(fields: [idJadwal], references: [idJadwal])
+  idJadwal Int
+
+  @@id([platKen, idJadwal])
 }