mirror of
				https://github.com/johrpan/musicus.git
				synced 2025-10-26 19:57:25 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
| CREATE TABLE "persons" (
 | |
|     "id" TEXT NOT NULL PRIMARY KEY,
 | |
|     "first_name" TEXT NOT NULL,
 | |
|     "last_name" TEXT NOT NULL
 | |
| );
 | |
| 
 | |
| CREATE TABLE "instruments" (
 | |
|     "id" TEXT NOT NULL PRIMARY KEY,
 | |
|     "name" TEXT NOT NULL
 | |
| );
 | |
| 
 | |
| CREATE TABLE "works" (
 | |
|     "id" TEXT NOT NULL PRIMARY KEY,
 | |
|     "composer" TEXT NOT NULL REFERENCES "persons"("id"),
 | |
|     "title" TEXT NOT NULL
 | |
| );
 | |
| 
 | |
| CREATE TABLE "instrumentations" (
 | |
|     "id" BIGINT NOT NULL PRIMARY KEY,
 | |
|     "work" TEXT NOT NULL REFERENCES "works"("id") ON DELETE CASCADE,
 | |
|     "instrument" TEXT NOT NULL REFERENCES "instruments"("id") ON DELETE CASCADE
 | |
| );
 | |
| 
 | |
| CREATE TABLE "work_parts" (
 | |
|     "id" BIGINT NOT NULL PRIMARY KEY,
 | |
|     "work" TEXT NOT NULL REFERENCES "works"("id") ON DELETE CASCADE,
 | |
|     "part_index" BIGINT NOT NULL,
 | |
|     "title" TEXT NOT NULL,
 | |
|     "composer" TEXT REFERENCES "persons"("id")
 | |
| );
 | |
| 
 | |
| CREATE TABLE "work_sections" (
 | |
|     "id" BIGINT NOT NULL PRIMARY KEY,
 | |
|     "work" TEXT NOT NULL REFERENCES "works"("id") ON DELETE CASCADE,
 | |
|     "title" TEXT NOT NULL,
 | |
|     "before_index" BIGINT NOT NULL
 | |
| );
 | |
| 
 | |
| CREATE TABLE "ensembles" (
 | |
|     "id" TEXT NOT NULL PRIMARY KEY,
 | |
|     "name" TEXT NOT NULL
 | |
| );
 | |
| 
 | |
| CREATE TABLE "recordings" (
 | |
|     "id" TEXT NOT NULL PRIMARY KEY,
 | |
|     "work" TEXT NOT NULL REFERENCES "works"("id"),
 | |
|     "comment" TEXT NOT NULL
 | |
| );
 | |
| 
 | |
| CREATE TABLE "performances" (
 | |
|     "id" BIGINT NOT NULL PRIMARY KEY,
 | |
|     "recording" TEXT NOT NULL REFERENCES "recordings"("id") ON DELETE CASCADE,
 | |
|     "person" TEXT REFERENCES "persons"("id"),
 | |
|     "ensemble" TEXT REFERENCES "ensembles"("id"),
 | |
|     "role" TEXT REFERENCES "instruments"("id")
 | |
| );
 | |
| 
 | |
| CREATE TABLE "mediums" (
 | |
|     "id" TEXT NOT NULL PRIMARY KEY,
 | |
|     "name" TEXT NOT NULL,
 | |
|     "discid" TEXT
 | |
| );
 | |
| 
 | |
| CREATE TABLE "track_sets" (
 | |
|     "id" TEXT NOT NULL PRIMARY KEY,
 | |
|     "medium" TEXT NOT NULL REFERENCES "mediums"("id") ON DELETE CASCADE,
 | |
|     "index" INTEGER NOT NULL,
 | |
|     "recording" TEXT NOT NULL REFERENCES "recordings"("id")
 | |
| );
 | |
| 
 | |
| CREATE TABLE "tracks" (
 | |
|     "id" TEXT NOT NULL PRIMARY KEY,
 | |
|     "track_set" TEXT NOT NULL REFERENCES "track_sets"("id") ON DELETE CASCADE,
 | |
|     "index" INTEGER NOT NULL,
 | |
|     "work_parts" TEXT NOT NULL,
 | |
|     "path" TEXT NOT NULL
 | |
| );
 | |
| 
 | 
