SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 13.04.2015, 22:45:18
ake123 ake123 ist offline
Anfänger
 
Registriert seit: Apr 2015
Alter: 34
Beiträge: 4
Filmdatenbank

Hallo zusammen,

bin gerade dabei eine Filmdatenbank zu erstellen. In der Tabelle Title habe ich Filme eingespeichert. Nach Füllen der Tabelle mit Filmen gab es noch keine Probleme. Die Suchfunktion war sehr performant. Dann habe ich Serien wie folgt in der selben Tabelle eingespeichert.

Bspw.

Title-ID Title Ref-Title-ID
1 Walking Dead 0
2 Walking Dead Staffel 1 1
3 Walking Dead Episode 1 2
4 Walking Dead Episode 2 2
5 Walking Dead Staffel 2 1
6 Walking Dead Episode 1 5
7 Walking Dead Episode 2 5
8 Toy Story 0
9 Monster AG 0

Nach Einspeichern der Serien hatte ich 40.000 Einträge, obwohl mit Ref-Title-ID=0 (Filme/Serien auf oberster Ebene, nach denen gesucht werden kann) nur ca. 2.500 waren. D.h. Staffeln und Episoden sind gewaltig viel. Dadurch ist die Performance beim Suchen schlecht.

Denkt ihr ich sollte eine Tabelle mit Filmen und eine mit Serien machen? Oder gar zwei getrennte Datenbanken? Bei letzterem müsste ich dann per Ajax parallel suchen lassen. Ajax verwende ich momentan gar nicht.

Habt ihr Ideen?
Mit Zitat antworten
  #2  
Alt 14.04.2015, 10:45:21
sysop sysop ist offline
Member
 
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
AW: Filmdatenbank

Das Stichwort ist Normalisierung. Je nachdem, was du alles erfassen möchtest, können das einige Tabellen werden.

Bsp.

Tabelle Filmname

1 FName-ID
2 Titel
3 Studio
4 Staffel Nummer
5 Folge Nummer



Tabelle Art

1 Art-ID
2 Filmart (Serie, Spielfilm, Theater, Hörspiel etc)


Tabelle Schauspieler

1. Schauspieler-ID
2. Vorname
3. Nachname
4. ......
5. .....

In einer Ergebnistabelle setzt du dann alles zusammen.

Film_db

1. FName-ID
2. Art-ID
3. Schauspieler-ID
__________________
Gruss sys ;-)
Ich möchte wie mein Grossvater sterben, lächelnd und schlafend, nicht schreiend und weinend, wie sein Beifahrer.
Mit Zitat antworten
  #3  
Alt 14.04.2015, 13:10:51
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: Filmdatenbank

Hi,

wie sieht denn deine Abfrage bisher aus?

Ansonsten *unterschreib* ich das was sysop schreibt!
Dein Tabellendesign ist mist.

MfG

CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #4  
Alt 14.04.2015, 20:20:10
ake123 ake123 ist offline
Anfänger
 
Registriert seit: Apr 2015
Alter: 34
Beiträge: 4
AW: Filmdatenbank

Hi danke für die Antworten

Folgende Tabellen habe ich:

Title
TitleActor
Actor
TitleDirector
Director
TitleGenre
Genre

und noch paar andere Tabellen die nebensächlich sind.

Spielfilme und Serien werde ich nun in Tabelle Title lassen. Die Staffeln zu einer Serie packe ich in eine neue Tabelle Season. Die Episoden in eine Tabelle Episode.

Wenn ich dann einen Select auf Title mit Left Join auf Season mache und Season-ID = 0/Null ist weiß ich, dass es sich um einen Spielfilm handelt und kann direkt den Link für die Folgeseite entsprechend aufbauen. Wenn es eine Serie ist wird der Link anders aufgebaut, da auf der Folgeseite erst einmal die Staffeln, danach auf deren Folgeseite die Episoden und letztlich dann die Infos zur Episode dargestellt werden. Geht das? Irgendwie bin ich noch nicht ganz zufrieden. Alle Daten komplett in Title war schon schöner aber unperformanter...

Ich habe vor längerer Zeit schon einmal an einem ähnlichen Projekt gearbeitet. Die Tabelle war irgendwann so groß, dass Suchanfragen über den Titel eines Films schon mehrere Sekunden gedauert haben (Select über VARCHAR-Feld 255 Zeichen). Deswegen habe ich nun mal zum Test eine indexTitle-Tabelle erstellt, in der zu jedem Wort, was in einem Titel vorkommen kann, die Title-ID in einem JSON-Array abgelegt wird. So werden bei einer Suchanfrage die Wörter in der indexTitle-Tabelle gesucht und deren JSON-Arrays mit den Title-ID's zur Suche in der Tabelle Title verwendet. Am Anfang macht das denke ich keinen Unterschied. Erst wenn die Tabelle wächst wird man das spüren. Was denkt ihr?
Mit Zitat antworten
  #5  
Alt 15.04.2015, 02:13:54
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: Filmdatenbank

Hi,

Zitat:
(Select über VARCHAR-Feld 255 Zeichen)
Wahrscheinlich wie viele am Anfang mit LIKE :/ und
noch schlimmer mit 2x %

Zitat:
So werden bei einer Suchanfrage die Wörter in der indexTitle-Tabelle gesucht und deren JSON-Arrays mit den Title-ID's zur Suche in der Tabelle Title verwendet.
Wie stellst du dir dann eine Suche nach "Fast" & "Furios" vor?
Jedes liefert ein Array und dann weiter vergleichen?

Schau dir mal das hier an LINK

BTW: Wie wäre es dein Projekt vielleicht mit imdb.com zu verbinden?
oder mit Amazon als Such und Ergebnislieferant?

Ich habe für ein anderes Projekt ebenfalls Amazon mitbenutzt als SE,
also Suche über Amazon API -> Ergebnisse (ASIN von Amazon) vergleichen
mit eigener DB. So kann man auch Verkaufsprovision einkassieren ;)

MfG

CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #6  
Alt 16.04.2015, 00:23:49
ake123 ake123 ist offline
Anfänger
 
Registriert seit: Apr 2015
Alter: 34
Beiträge: 4
AW: Filmdatenbank

Danke CKaos für die Antwort.

Ich suche dann in meiner indexTitle nach "Fast" hole mir die TitleID's aus dem JSON-Array. Das gleiche dann mit "&" und "Furious". Die Anzahl der gleichen gefunden TitleID's sind die wahrscheinlichsten Treffer und werden ganz oben positioniert.

Gesucht wird allerdings in indexTitle, wie du schon vermutet hast, mit

SELECT titleIdArr FROM indextitle WHERE term like '%massa%';

Ich würde künftig das Attribut 'term' indizieren mit FULLTEXT und im SELECT den MATCH/AGAINST nutzen. Wäre das sinnvoller?

IMDB prüfe ich ab und vervollständige meine Daten...
Mit Zitat antworten
  #7  
Alt 16.04.2015, 13:46:46
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: Filmdatenbank

Hi,

Zitat:
SELECT titleIdArr FROM indextitle WHERE term like '%massa%';
Ganz schlecht, weil kein Index benutzt wird!
Das kann nur lahm sein, da gibt es keine zwei Meinungen.

Zitat:
Ich würde künftig das Attribut 'term' indizieren mit FULLTEXT und im SELECT den MATCH/AGAINST nutzen. Wäre das sinnvoller?
Schau dir den Link doch mal an ;)

MfG

CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #8  
Alt 16.04.2015, 22:48:12
ake123 ake123 ist offline
Anfänger
 
Registriert seit: Apr 2015
Alter: 34
Beiträge: 4
AW: Filmdatenbank

Hi den Link hatte ich schon von einer anderen Seite und ich würde das genauso umsetzen (Variante III - eigene Suchmaschine mit drei Tabellen).

Zitat:
Volltextsuche auf Basis eines Indizes mit allen Suchworten. Bei der vorherigen eingebauten MySQL Volltextsuche war das beim Erstellen der Tabelle mit dem Zusatz “fulltext” erledigt. Jetzt müssen wir uns da selber drum kümmern, gewinnen dadurch aber mehr Einfluss.
Ich setzte dann in der Suchwort-Tabelle auf das Attribut Suchwort einen Index mit Unique oder? Der Rest ist mir klar...
Mit Zitat antworten
Antwort

Stichworte
filmdatenbank, filme, serien


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQL - Filmdatenbank - Filmtitel/Darsteller Abfrage loddoking MySQLi/PDO/(MySQL) 30 24.09.2013 13:55:57


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:17:54 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt