php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 13-12-2007, 23:41
Metalphreek
 Newbie
Links : Onlinestatus : Metalphreek ist offline
Registriert seit: Dec 2007
Ort: Deutschland, Niedersachen
Beiträge: 4
Metalphreek ist zur Zeit noch ein unbeschriebenes Blatt
Metalphreek eine Nachricht über ICQ schicken
Standard Meine Forum Datenbank

Hallo Leute,

ich soll für meinen Lehrer ein Forum programmieren, in welchem es einfach nur möglich sein soll, sich zu registrieren, anzumelden,Threads zu eröffnen und dort Beiträge zu posten.

Nur habe ich folgendes Problem:
Meine Datenbank besteht aus 5 Tabellen, nur weiß ich nicht wie ich diese am besten Verknüpfen sollte.

Code:
+--------------+	+---------------+	+--------------+	+---------------+
|    board     |	|    thread     |	|     post     |	|     user      |
+--------------+	+---------------+	+--------------+	+---------------+
 board_id		 thread_id		 post_id		 user_id
 ¯¯¯¯¯¯¯¯		 ¯¯¯¯¯¯¯¯¯		 ¯¯¯¯¯¯¯		 ¯¯¯¯¯¯¯
 board_name		 board_id		 thread_id		 user_nickname
 board_info		 thread_name		 post_title		 user_password
 board_threads		 thread_answers		 post_time		 user_email
 board_posts		 user_name		 user_nickname		 user_posts
						 user_posts
Ich kann mit Joins noch nicht so wirklich umgehen, aber ich musste festellen, dass es doch ganz schön wär, diese zu beherrschen.

Falls ihr Verständnisfragen zur Datenbank habt, könnt ihr diese natürlich gerne posten.

Würde mich auf jeden Fall über eine Antwort freuen.

Greetz, Metal

PS: Wenn ihr (Logik-)Fehler findet, nennt sie mir bitte^^

Geändert von Metalphreek (13-12-2007 um 23:45 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 14-12-2007, 07:35
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du willst ein Forum, also eine eigentlich komplexere DB Anwendung programmieren und weisst nicht, wie man Tabellen verknüpft. Na dann mal ran an die Lektüre.
Erst mal was erarbeiten, dann um Hilfe fragen
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #3 (permalink)  
Alt 14-12-2007, 08:30
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Sag deinem Lehrer, er soll nen fertiges System verwenden!
Mit Zitat antworten
  #4 (permalink)  
Alt 14-12-2007, 09:03
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Meine Forum Datenbank

Zitat:
Original geschrieben von Metalphreek
ich soll für meinen Lehrer ein Forum programmieren
Ich glaube kaum, dass du das für den Lehrer programmieren sollst. Ich denke eher, dass wir dir bei den Hausaufgaben helfen sollen

Zitat:
Original geschrieben von Metalphreek
in welchem es einfach nur möglich sein soll, sich zu registrieren und anzumelden, Threads zu eröffnen und dort Beiträge zu posten.
Das gibt ja die Struktur schon fast vor

Zitat:
Original geschrieben von Metalphreek
Meine Datenbank besteht aus 5 Tabellen,
Ich sehe nur vier. Aber wie gesagt, drei würden für ein einfaches System genügen
Zitat:
Original geschrieben von Metalphreek
Ich kann mit Joins noch nicht so wirklich umgehen, aber ich musste festellen, dass es doch ganz schön wär, diese zu beherrschen.
Joins sind hier beschrieben
Zitat:
Original geschrieben von Metalphreek
Wenn ihr (Logik-)Fehler findet, nennt sie mir bitte
Stichwort Normalisierung
__________________
Gruss
H2O
Mit Zitat antworten
  #5 (permalink)  
Alt 14-12-2007, 09:26
Metalphreek
 Newbie
Links : Onlinestatus : Metalphreek ist offline
Registriert seit: Dec 2007
Ort: Deutschland, Niedersachen
Beiträge: 4
Metalphreek ist zur Zeit noch ein unbeschriebenes Blatt
Metalphreek eine Nachricht über ICQ schicken
Standard

Ich soll die wirklich für meinen Lehrer programmieren.
Ich hab mit ihm n Deal: Wenn ich es schaffe ihn ein Forum zu programmieren, dann bekomme ich 15 Punkte.

Und ja es sind nur 4 Tabellen, war müde ^^

Ich hab mir schon öfters Joins-Tutorials durchgelesen, aber wirklich schlau draus geworden bin ich nicht.

Was ist denn an meiner Datenbank falsch? Die dürfte eigtl vernünftig normalisiert sein.


Zitat:
Du willst ein Forum, also eine eigentlich komplexere DB Anwendung programmieren und weisst nicht, wie man Tabellen verknüpft. Na dann mal ran an die Lektüre.
Ich kann ja alles andere, also die PHP-Seiten, die Datenbanken erstellen, mein einziges Problem sind halt die Joins. Denn der Rest, ist überhaupt kein Problem für mich.
Mit Zitat antworten
  #6 (permalink)  
Alt 14-12-2007, 09:46
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

vielleicht hilft dir das hier weiter.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #7 (permalink)  
Alt 14-12-2007, 10:15
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wo klemmt es denn eigentlich? Wenn du schon einiges zu JOINs gelesen hast, bist du doch wohl in der Lage, welche zu formulieren. Mach das mal und poste die, die nicht das liefern, was du wolltest. Also erstmal anfangen und bei konkreten Problemen wiederkommen.
Mit Zitat antworten
  #8 (permalink)  
Alt 14-12-2007, 11:21
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Metalphreek

Was ist denn an meiner Datenbank falsch? Die dürfte eigtl vernünftig normalisiert sein.
Wenn du einen vernünftigen Artikel über Normalisierung gelesen hättet, dann wüsstest du, dass z.B. der username weder in den posts, noch in den threads was verloren hat. Und was user_posts in der user-Tabelle soll, verstehe ich auch nicht. Aber auch andere Attribute sind mir unklar.
__________________
Gruss
H2O
Mit Zitat antworten
  #9 (permalink)  
Alt 14-12-2007, 14:11
Metalphreek
 Newbie
Links : Onlinestatus : Metalphreek ist offline
Registriert seit: Dec 2007
Ort: Deutschland, Niedersachen
Beiträge: 4
Metalphreek ist zur Zeit noch ein unbeschriebenes Blatt
Metalphreek eine Nachricht über ICQ schicken
Standard

Ich hab's ein bisschen verbessert, und hoffe nun, dass sie normalisiert und verständlicher ist ^^

Code:
+--------------+	
|    board     | 	#Beinhaltet die Informationen über ein Forum	
+--------------+	
 board_id	 	#ID des Forums
 ¯¯¯¯¯¯¯¯	 	 
 board_name	 	#Name des Forums
 board_info	 	#Informationen zum Forum
 board_threads	 	#Anzahl der Threads in einem Forum
 board_posts	 	#Anzahl der Posts in einem Forum

  board -> 1:n <-board_thread



+--------------+
| board_thread |
+--------------+
 board_id
 ¯¯¯¯¯¯¯¯
 thread_id
 ¯¯¯¯¯¯¯¯¯

 thread -> 1:n <- board_thread



+---------------+	
|    thread     | 	#Beinhaltet die Informationen über einen Thread
+---------------+	
 thread_id	  	#ID des Threads
 ¯¯¯¯¯¯¯¯¯	  
 board_id	  	#Gibt an in welchem Board der Thread enthalten ist
 thread_name	 	#Name des Threads
 thread_answers	  	#Anzahl der Antworten auf den Thread
 user_name	  	#Gibt an welcher User den Thread erstellt an

  thread -> 1:n <- thread_post



+-------------+
| thread_post |
+-------------+
 thread_id
 ¯¯¯¯¯¯¯¯¯
 post_id
 ¯¯¯¯¯¯¯
  post -> 1:n <- thread_post
		


+--------------+
|     post     |	#Beinhaltet die Informationen über einen Post
+--------------+
 post_id		#ID des Posts
 ¯¯¯¯¯¯¯	
 thread_id		#Gibt an in welchem Thread der Post ist
 post_title		#Titel des Posts (optional)
 post_time		#Zeit und Datum, wann der Post geschrieben wurde
 user_nickname		#Gibt an wer den Post geschrieben hat
 user_posts		#Gibt an, wieviel Posts ein User bereits geschrieben hat

  user -> 1:n <- posts



+--------------+
|     user     |	#Beinhaltet die Infromationen über einen User
+--------------+
 user_id		#ID des Users
 ¯¯¯¯¯¯¯		
 user_nickname		#Nickname des Users
 user_email		#E-Mail des Users
 user_posts		#Gibt an, wieviel Posts ein User bereits geschrieben hat
greetz metal
Mit Zitat antworten
  #10 (permalink)  
Alt 14-12-2007, 14:18
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Und dann überprüfst du mal, wieviel redundante nicht-FK-Attribute du in dieser DB hast!
__________________
Gruss
H2O
Mit Zitat antworten
  #11 (permalink)  
Alt 14-12-2007, 14:27
Metalphreek
 Newbie
Links : Onlinestatus : Metalphreek ist offline
Registriert seit: Dec 2007
Ort: Deutschland, Niedersachen
Beiträge: 4
Metalphreek ist zur Zeit noch ein unbeschriebenes Blatt
Metalphreek eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von H2O
Und dann überprüfst du mal, wieviel redundante nicht-FK-Attribute du in dieser DB hast!
Also Datenredundanzen finde ich jetzt nicht, vielleicht könntest du mir sagen wo genau. Weil ich bin öfters durchgegangen, aber von Redundanzen kein Stück zu sehen (aus meiner Sicht)

greetz metal
Mit Zitat antworten
  #12 (permalink)  
Alt 14-12-2007, 14:31
Mercury1987
 Registrierter Benutzer
Links : Onlinestatus : Mercury1987 ist offline
Registriert seit: Apr 2007
Ort: Furschweiler
Beiträge: 79
Mercury1987 ist zur Zeit noch ein unbeschriebenes Blatt
Mercury1987 eine Nachricht über ICQ schicken
Standard

mal n kleinen tipp. Hol mal bei threads und post user_name raus und erstetz es durch user_id, dürfte schon n bissl helfen
Mit Zitat antworten
  #13 (permalink)  
Alt 14-12-2007, 14:41
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Also ich sehe auf den ersten Blick Redundanzen.
Der Kommentar "Gibt an, wieviel Posts ein User bereits geschrieben hat" kommt direkt zweimal vor.

Und sämtliche der nachfolgenden Spalten (ich gebe mal die Kommentare an) sind redundant:
- Anzahl der Threads in einem Forum
- Anzahl der Posts in einem Forum
- Anzahl der Antworten auf den Thread
- Gibt an, wieviel Posts ein User bereits geschrieben hat
Mit COUNT() und JOIN kannst du diese Werte alle "live" ermitteln. Das mag nicht die schnellste Lösung sein, aber du bist ja noch bei der Normalisierung. Optimierung kommt später.

thread_id #Gibt an in welchem Thread der Post ist
ist auch redundant. Dazu hast du schließlich die Relation thread_post.


OffTopic:
Wenn du das so deinem Lehrer lieferst, könnte er berechtigt annehmen, du hättest das Schema aus einer fertigen Boardsoftware übernommen.
Mit Zitat antworten
  #14 (permalink)  
Alt 14-12-2007, 14:54
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Scheinbar willst du auch nicht - wie im ersten Post geschrieben - ein Forum bauen, sondern mehrere. Ok, dann brauchst du tatsächlich vier Tabellen. Ich hab mal versucht, das etwa so darzustellen, wie es funktionieren könnte:
__________________
Gruss
H2O
Mit Zitat antworten
  #15 (permalink)  
Alt 14-12-2007, 14:55
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sorry, hier noch das fehlende ERD:
Angehängte Grafiken
Dateityp: png dbforum.png (24,2 KB, 156x aufgerufen)
__________________
Gruss
H2O
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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