binary('id'); $table->string('name', 255)->nullable(); $table->string('L', 5)->nullable(); $table->string('meter', 3)->nullable(); $table->timestamps(); }); Schema::create('collection_attributes', function (Blueprint $table) { $table->binary('collection_id'); $table->enum('type', ['Author','Composer','Discography','Rhythm','History','File','Book','Note','Source','Transcriber']); $table->string('string', 255); $table->tinyInteger('ordering')->unsigned()->default(0); $table->timestamps(); $table->primary(['collection_id','type','ordering']); $table->foreign('collection_id')->references('id')->on('collections')->onUpdate('cascade')->onDelete('cascade'); }); // user profiles/roles/groups // Schema::create('Groups', function (Blueprint $table) { // $table->bigIncrements('id'); // $table->string('name', 20); // $table->string('description', 100); // $table->timestamps(); // }); Schema::create('persons', function (Blueprint $table) { $table->binary('id'); $table->string('name', 63); $table->string('email', 255); $table->timestamps(); }); Schema::create('tunes', function (Blueprint $table) { $table->binary('id'); $table->tinyInteger('x_id')->default('1'); $table->timestamps(); }); Schema::create('tune_settings', function (Blueprint $table) { $table->binary('id'); $table->binary('tune_id'); $table->string('meter', 3)->default('C'); $table->string('keysig',5)->default('C'); $table->string('filename', 255)->nullable(); $table->string('tempo', 10)->nullable(); $table->string('L', 5)->nullable(); $table->text('music')->nullable(); $table->string('parts', 255)->nullable(); $table->timestamps(); $table->foreign('tune_id')->references('id')->on('tunes')->onUpdate('cascade')->onDelete('cascade'); }); Schema::create('tune_attributes', function (Blueprint $table) { $table->binary('tune_id'); $table->enum('type', ['Title','Group','Origin','Rhythm','History']); $table->string('string', 255); $table->tinyInteger('ordering')->unsigned()->default(0); $table->timestamps(); $table->primary(['tune_id','type','ordering']); $table->foreign('tune_id')->references('id')->on('tunes')->onUpdate('cascade')->onDelete('cascade'); }); Schema::create('tune_books', function (Blueprint $table) { $table->binary('collection_id'); $table->binary('setting_id'); $table->timestamps(); $table->primary(['collection_id','setting_id']); $table->foreign('collection_id')->references('id')->on('collections')->onUpdate('cascade')->onDelete('cascade'); $table->foreign('setting_id')->references('id')->on('tune_settings')->onUpdate('cascade')->onDelete('cascade'); }); Schema::create('tune_persons', function (Blueprint $table) { $table->binary('tune_id'); $table->binary('person_id'); $table->enum('type', ['Author','Composer','Transcriber','']); $table->tinyInteger('ordering')->unsigned()->default(0); $table->timestamps(); $table->primary(['tune_id','person_id','type','ordering']); $table->foreign('tune_id')->references('id')->on('tunes')->onUpdate('cascade')->onDelete('cascade'); $table->foreign('person_id')->references('id')->on('persons')->onUpdate('cascade')->onDelete('cascade'); }); Schema::create('tune_setting_attributes', function (Blueprint $table) { $table->binary('setting_id'); $table->enum('type', ['Transcriber','Note','Discography','Source','Word','Book']); $table->string('string', 255); $table->tinyInteger('ordering')->unsigned()->default(0); $table->timestamps(); $table->primary(['setting_id','type','ordering']); $table->foreign('setting_id')->references('id')->on('tune_settings')->onUpdate('cascade')->onDelete('cascade'); }); Schema::create('tune_setting_persons', function (Blueprint $table) { $table->binary('setting_id'); $table->binary('person_id'); $table->tinyInteger('ordering')->unsigned()->default(0); $table->timestamps(); $table->primary(['setting_id','person_id','ordering']); $table->foreign('setting_id')->references('id')->on('tune_settings')->onUpdate('cascade')->onDelete('cascade'); $table->foreign('person_id')->references('id')->on('persons')->onUpdate('cascade')->onDelete('cascade'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('tune_setting_persons'); Schema::drop('tune_setting_attributes'); Schema::drop('tune_persons'); Schema::drop('tune_books'); Schema::drop('tune_attributes'); // Schema::drop('Groups'); Schema::drop('tune_settings'); Schema::drop('tunes'); Schema::drop('persons'); Schema::drop('collections'); } }