Tabelle Media: enthält die jeweiligen Nutzereinträge
- ID
- MediaTypeID
- ...
Tabelle Languages: enthält die Sprachen
- LanguageID
- Language
Dann kommen die ganzen Tabellen für die Metadaten:
Tabelle MediaVideoStreams:
- MediaID
- ID
- LanguageID
- Path (absolut oder relativ... ggf. beides)
- FileSize
- Name
- Codec
- Duration
- Width
- Height
- ScanType
- AspectDisplayRatio
- Bitrate
- MultiViewCount
- MultiViewLayout
- StereoMode
- Chapters (ggf. eigene Tabelle)-
- Default
- Forced
- Compressed
- Tags
Tabelle MediaAudioStreams:
- MediaID
- ID
- LanguageID
- Path (absolut oder relativ... ggf. beides)
- FileSize
- Name
- Codec
- Channels
- Bitrate
- Default
- Forced
- Compressed
- Tags
Tabelle MediaSubtitles:
- MediaID
- ID
- LanguageID
- Path (absolut oder relativ... ggf. beides)
- FileSize
- Name
- Charset
- Default
- Forced
- Compressed
- Tags
Damit haben wir erstmal die reinen Datei-Metadaten abgehandelt. Nun kommen die Medieninformationen:
Tabelle MediaTypes: enthält verfügbare Medien-Arten (Movie, Series (=Serie), Season (=Staffel), TV (=Folge), Short, Supplemental)
- ID
- Type
Bei Abbildung mehrerer Varianten wäre noch die Variantenart nötig, wie bei EIDR (Abstraction, Digital, Performance). Lasse ich mal weg.
Tabelle Providers: enthält die ganzen Anbieterm also IMDb, TMDb, OFDb, Netflix, etc. und den zugehörigen Such-Link, um ihn im Programm nutzen zu können
- ID
- Name
- SearchURL
- Prefix (könnte bei IMDb "tt" sein und damit könnte man die IMDb-ID als Integer hinterlegen, was die DB flotter macht)
- Suffix
- ...
Tabelle MediaIDs: enthält sämtliche alternativen IDs zu einem Medium (also IMDb-ID, TMDb-ID, etc.)
- MediaID
- ProviderID
- AltID
Jetzt bedarf es im Grunde für jeden Provider eigener Datenbanktabellen, da die Provider ihre Informationen (leider) völlig unterschiedlich halten.
Ich stelle mir das für IMDb wie folgt vor:
Tabelle IMDbTitleBasics:
- ID
- TypeID
- IsAdult
- StartYear
- EndYear
- Runtime
- AverageRating
- NumberVotes
- ...
Tabelle IMDbTitleAKAs: enthält sämtliche Titel zum IMDb-Eintrag
- IMDbTitleBasicsID
- RegionID (braucht eigene Tabelle)
- LanguageID
- TypeID (braucht eigene Tabelle)
- Attributes
- IsOriginalTitle
Damit lassen sich sämtliche Titel hinterlegen.
Tabelle IMDbGenres: sollte klar sein...
- ID
- Genre
Tabelle IMDbTitleGenres:
- IMDbTitleBasicsID
- IMDbGenresID
- HierarchicalLevel (falls Abstufung notwendig, also bspw. eher Thriller und Drama als Action usw.)
Tabelle IMDbPersons: enthält sämtliche Beteiligte
- ID
- DateOfBirth
- DateOfDeath
- ...
Tabelle IMDbPersonsAKAs: enthält alle Namen der Beteiligten
- IMDbPersonsID
- ID (Zähler)
- Name
- IsLegalName (also der aktuell bekannte, rechtlich gültige Name)
Tabelle IMDbProfessions: (oder generell Professions) enthält die möglichen Berufe
- ID
- Profession
Tabelle IMDbTitleRoles: enthält die Rollen
- IMDbTitleBasicsID
- ID (Zähler)
- Role
Tabelle IMDbTitlePersons: enthält die Bezüge zwischen IMDb-Eintrag und den Beteiligten
- IMDbTitleBasicsID
- IMDbPersonsID
- IMDbProfessionsID
- IMDbTitleRolesID
- IsPrincipal
Damit lassen sich je Person mehrere Beteiligungen und Rollen zuweisen, also bspw. kann ein Regisseur auch Autor sein und gleichzeitig 2 Rollen innehaben.
Dann gibts natürlich noch weitere Tabellen zu den Titeln (Handlungen, Reviews, Auszeichnungen, ...) und Personen (Biographien, Auszeichnungen, Zitate, ...), aber ich lass es erstmal gut sein.