zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Frage bzw. Hilfe zu Datenbankstruktur in einer Normalform

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 09.01.2007, 21:44
Guitarhero
neuer user
Thread-Ersteller
 
Registriert seit: 18.07.2006
Beiträge: 19
human befindet sich auf einem aufstrebenden Ast
Standard Frage bzw. Hilfe zu Datenbankstruktur in einer Normalform

Vielleicht kennt sich ja jemand von euch damit aus und könnte mir beim aufbau eines entsprechend optimalen Datenbankdesigns helfen. denn das bisherige ist einfach schlecht und birgt zu hohe Redundanz insich.

Ich habe eine Tabelle die verschiedene Daten eines DVD-Films beinhaltet wie zb. den Alternativen Titel, Die Schauspieler und Regisseure usw.. Bisher habe ich das bei den Schauspielern so gehandelt das diese einzeln in einer dbTabelle [Actors] stehen die den Schauspielernamen und die entsprechende verweis ID beinhaltet. In der Tabelle des DVD-Films habe ich dann nur noch kommasepariert die IDs aufgeführt die dann bei der Anzeige des DVD-Films als Array ausgelesen und in einer Schleife ausgegeben werden.

So verfahre ich auch mit allen anderen Daten wie zb. der DVD-Film IDs die ein benutzer in seiner persönlichen Filmeliste gespeichert hat.

Könnte mir demnach vielleicht jemand damit helfen ?
Würde dies gerne verstehen, aber die Tutorials die sich damit befassen sagen mir zwar einiges, aber bei der eigentlichen Umsetzung hapert es dann irgendwie, und bevor ich mich da zu sehr wieder verschachtel frage ich einfach mal hier nach

mfg
human
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 09.01.2007, 22:19
Benutzerbild von Yhi
Yhi Yhi ist offline
/* no comment */
XHTMLforum-Mitglied
 
Registriert seit: 28.05.2006
Beiträge: 208
Yhi befindet sich auf einem aufstrebenden Ast
Standard

Das ist eine Typische m:n Beziehung. Man legt dazu noch eine 3 Tabelle an, in der die Primärschlüssel der beiden anderen Tabellen gespeichert und so zugeordnet werden können.

In der MySQL Abfrage kannst du die Beziehung dann mit Joins auflösen:
MySQL Tutorial - Join (Englisch, aber gut und detailliert erklärt)
__________________
PHP und Webdesign Blog
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 09.01.2007, 22:44
Guitarhero
neuer user
Thread-Ersteller
 
Registriert seit: 18.07.2006
Beiträge: 19
human befindet sich auf einem aufstrebenden Ast
Standard

@Yhi
erstmal Danke für deine Antwort.
Das mit den Joins habe ich mir auch mal durchgelesen, dafür brauch man aber eben ein entsprechendes dbLayout.

Mir erschliesst sich aber nicht wie ich das mit den Schauspielern oder Regisseuren machen soll.

Ich habe eine Tabelle: DVD und eine Tabelle: Actors die alle Schauspieler beinhaltet, da aber ein Schauspieler auch in mehreren Filmen mitspielt wird das ganze dann problematisch :-/
Ebenso können natürlich auch mehrere User den selben Film in ihrer persönlichen Filmeliste haben die beim besuch des Userprofils angezeigt wird.

So Schaut das ganze momentan aus:
PHP-Code:
TableFilm
+----+-------+-------+--------+---------+------------+-----+-------+------------+-------+---------+---------+
id dvdid title atitel dvddate rentaldate fsk rtime director   genre cover   plot    |
+----+-------+-------+--------+---------+------------+-----+-------+------------+-------+---------+---------+
1  3359  Tron  Tron   04.11.0222.10.02   12  112   | Array-dids SciFi 3359.jpgEs war..|
+----+-------+-------+--------+---------+------------+-----+-------+------------+-------+---------+---------+
  +-----------------+----------------+------------+---------+-------+--------+---------+------------+---------+
> | 
productionplace productiondate actors     dvdcase index studio dvdtype regioncode picture |
> +-----------------+----------------+------------+---------+-------+--------+---------+------------+---------+
> | 
USA             14.12.77       | Array-aids |    1    |   0   MGM    |   02    |     2      |   03    |
  +-----------------+----------------+------------+---------+-------+--------+---------+------------+---------+

  +-------+------------+------------+--------+---------+----------+
> | 
audio language   subtitle   extras mextras ean      |
> +-------+------------+------------+--------+---------+----------+
> |   
04  | Array-lids | Array-sids |   ...  |   ...   | 16164946 |
  +-------+------------+------------+--------+---------+----------+



TableActors
+------------------+
aid actor      |
+------------------+
1   Jack Black |
+------------------+

TableDirectors
+---------------------+
did director      |
+---------------------+
|  
1  Peter Jackson |
+---------------------+

TableLanguages
+----------------+
lid language |
+----------------+
|  
1  German   |
+----------------+

TableSubtitles
+----------------+
sid subtitle |
+----------------+
|  
1  German   |
+----------------+ 

Geändert von human (09.01.2007 um 23:36 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 10.01.2007, 08:33
Benutzerbild von kratzbaum
Neuer Benutzer
neuer user
 
Registriert seit: 29.10.2006
Beiträge: 18
kratzbaum befindet sich auf einem aufstrebenden Ast
Standard

Suche mal im Internet nach Entity Relationship, Codd, Normalform.

1. Schritt: Bestimme die Entitäten. Eselsbrücke :Es gibt


Also
Es gibt
- Film
- Schauspieler
- Regisseur
- Speichermedium (z.B. CD, DVD, VHS-Kassette usw)
usw

Es reicht, wenn du bis zur 3. Normalform normalisierst.
Du hast einen Denkfehler gemacht, als du FILM und DVD gleichgesetzt hast. Das sind 2 verschiedene
Entitäten!
Ein Film kann auf mehreren DVDs liegen.
Auf einer DVD können mehrere Filme liegen.
Lege für jede Entität die Attribute fest.
z.B
Tabelle Schauspieler
- ID_Schauspieler
- Name
- Vorname
- Geschlecht
- Geburtstag usw
Achte darauf, dass die Attribute nicht voneinander abhängig sind
(z.B. "Alter" und "Geburtstag" wären voneinander abhängig)

2. Schritt:
Bestimme die Zuordnungstabellen
z.B.
Film_Schauspieler
- ID_Film
- ID_Schauspieler
Die Kombination aus beiden IDs ist der eindeutige(!) Schlüssel

Ich bin bereit dir zu helfen.
Brauche dazu die Entitäten und die für dich wichtigen Attribute

Mailto kratzbaum(at)gmx.info

Geändert von kratzbaum (10.01.2007 um 08:45 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 10.01.2007, 12:19
Guitarhero
neuer user
Thread-Ersteller
 
Registriert seit: 18.07.2006
Beiträge: 19
human befindet sich auf einem aufstrebenden Ast
Standard

Mail ist raus
Mit Zitat antworten
  #6 (permalink)  
Alt 11.01.2007, 21:01
Jan Jan ist offline
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 27.02.2005
Beiträge: 172
Jan befindet sich auf einem aufstrebenden Ast
Standard

Hi!

Vielleicht noch eine kleine Anmerkung dazu, was mir beim Lesen aufgefallen ist: Schauspieler und Regisseure sind Personen. Eine Person kann sowohl Schauspieler als auch Regisseur sein. Ich würde hier eine Tabelle für Personen hinzufügen. Eventuell noch zwei weitere, eine in denen die Zuordnungen zu den "Berufen stehen" eine weitere in der die "Berufe" gespeichert werden. Sonst müssten Namen und eventuell weitere Daten doppelt gepflegt werden.

Gruß
Jan
Mit Zitat antworten
  #7 (permalink)  
Alt 11.01.2007, 21:08
Guitarhero
neuer user
Thread-Ersteller
 
Registriert seit: 18.07.2006
Beiträge: 19
human befindet sich auf einem aufstrebenden Ast
Standard

@Jan
Dies habe ich auch schon zu Anfang in betracht gezogen, doch dann schnell wieder verworfen, weil die Namen der Regisseure auch in der Tabelle der Schauspieler stehen können. Die würde zu mehr Redundanz führen auch wenn es rein [logisch] betrachtet besser ist den Namen nur einmal in der Datenbank zu führen.

Dank kratzbaum und einiger Beiträge im Web bin ich schon ein gutes Stück weiter und werde, sobald alles fertig ist, meine Datenbankstruktur hier mal öffentlich machen, vielleicht hat ja jemand ein ähnliches vorhaben und kann sich dann dies zur Hilfe nehmen.

Geändert von human (11.01.2007 um 21:11 Uhr)
Mit Zitat antworten
Antwort


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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Frage zu PHP Archivierung bzw. Historie |SONY| Serveradministration und serverseitige Scripte 5 28.05.2009 19:26
Kleine Anfänger Frage - Links zu weit unten bzw. Farbwechsel -jeseiX- CSS 4 03.06.2007 12:53
hilfe bzw anregung bezüglich code und aufbau flow CSS 0 23.11.2005 16:13
Problem bzw. Frage zu ScitE koDiacc Offtopic 0 25.04.2005 15:34
Kann es sein, das Teil-Beiträge fehlen? Bzw. noch ne Frage paul123 Fragen, Konstruktive Kritik, Lob / Bekanntmachungen 7 28.09.2004 17:35


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