php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.02.2012, 13:53  
Neuer Benutzer
 
Registriert seit: 30.12.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
Nicodacunha befindet sich auf einem aufstrebenden Ast
Standard Tabellen in Datenbank verbinden

Hallo,

ich bin gerade dabei eine Datenbank für eine Webseite anzulegen. Ich mache sowas im Grunde gerade zum ersten Mal und habe da folgende Frage:

Ich habe eine Tabelle (Kurse), wo ich Kurse speicher / eingebe, welche angeboten werden..

Tabelleninhalt:
Kurs-ID, Kursname, Bereich, Niveaustufe, usw.

nun habe ich ja auch Teilnehmer zu jedem Kurs. Diese möchte ich in einer Extratabelle (Kursteilnehmer) speichern.

Hier der Tabelleninhalt:
Vorname, Name, Anschrift usw.

jetzt möchte ich diese Tabellen gerne Verbinden (also ist wohl ein Fremdschlüssel nötig), damit die entsprechenden Daten zu jedem Kurs sichtbar sind..

Also: zu jedem Kurs will ich später per Abfrage die jeweiligen Teilnehmer sehen können auf meiner Webseite....

Ich weiss, dass ich dafür einen Fremdschlüssel in der Tabelle Kursteilnehmer brauche. Aber wie mache ich das?

Ich benutze über Meinen Hoster phpmyadmin 2.6.4 und MySQL 5.0.91

Hoffe ihr könnt mir da weiterhelfen..

Gruß
Nicodacunha ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.02.2012, 14:01  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Sicher, dass sich jeder Teilnehmer nur zu einem einzigen Kurs anmelden kann?
chorn ist offline   Mit Zitat antworten
Alt 13.02.2012, 14:05  
Neuer Benutzer
 
Registriert seit: 30.12.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
Nicodacunha befindet sich auf einem aufstrebenden Ast
Standard

Also ein Teilnehmer kann sich natürlich zu sovielen Kursen anmelden wie er möchte..

Wichtig ist mir nur, das ich da keine doppelten Daten habe, aber Dennoch zu jedem Kurs die Teilnehmer sehen kann und...
theoretisch auch, zu welchen Kursen ein Teilnehmer dann angemeldet ist..
Nicodacunha ist offline   Mit Zitat antworten
Alt 13.02.2012, 15:07  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Wie wäre es mit einer n:m-Beziehung? Stichwort: Normalisierung
chorn ist offline   Mit Zitat antworten
Alt 13.02.2012, 15:21  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Nicodacunha Beitrag anzeigen
Also ein Teilnehmer kann sich natürlich zu sovielen Kursen anmelden wie er möchte..

Wichtig ist mir nur, das ich da keine doppelten Daten habe, aber Dennoch zu jedem Kurs die Teilnehmer sehen kann und...
theoretisch auch, zu welchen Kursen ein Teilnehmer dann angemeldet ist..
Du brauchst:
- in jeder Deiner jetzigen Tabellen einen Primary Key
- eine weitere Tabelle mit je einem FK zu den jetzigen Tabellen
- einen UNIQUE bzw. Primary Key auf den 2 Spalten dieser weiteren Tabelle

Diese Zutaten gut verrühren und einwirken lassen...
akretschmer ist gerade online   Mit Zitat antworten
Alt 13.02.2012, 16:46  
Neuer Benutzer
 
Registriert seit: 30.12.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
Nicodacunha befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von akretschmer Beitrag anzeigen
Du brauchst:
- in jeder Deiner jetzigen Tabellen einen Primary Key
- eine weitere Tabelle mit je einem FK zu den jetzigen Tabellen
- einen UNIQUE bzw. Primary Key auf den 2 Spalten dieser weiteren Tabelle

Diese Zutaten gut verrühren und einwirken lassen...
Hallo,

in jeder Tabelle hab ich einen Primärschlüssel. Dafür Mache ich immer "ID-Felder" also kurs_id usw...

Das mit den Fremdschlüsseln hab ich mir schon gedacht, nur wie genau mache ich das denn in phpmyadmin..?

Wass genau muss ich da einstellen, oder muss ich es da in die SQL-Zeile per Hand eingeben..?

Oder reicht es aus, wenn ich in der Tabelle: "Kursteilnehmer" , wo z.b. die kurs_id der fremdschlüssel sein soll.. - also die Beziehung zu der Haupttabelle kurse - genauso bennene, wie in der haupttabelle..?
Nein, oder?!
Nicodacunha ist offline   Mit Zitat antworten
Alt 13.02.2012, 17:08  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Nicodacunha Beitrag anzeigen
Hallo,

in jeder Tabelle hab ich einen Primärschlüssel. Dafür Mache ich immer "ID-Felder" also kurs_id usw...

Das mit den Fremdschlüsseln hab ich mir schon gedacht, nur wie genau mache ich das denn in phpmyadmin..?

Wass genau muss ich da einstellen, oder muss ich es da in die SQL-Zeile per Hand eingeben..?

Oder reicht es aus, wenn ich in der Tabelle: "Kursteilnehmer" , wo z.b. die kurs_id der fremdschlüssel sein soll.. - also die Beziehung zu der Haupttabelle kurse - genauso bennene, wie in der haupttabelle..?
Nein, oder?!
Angenommen, du hast diese Tabellen:

Code:
test=# select * from kurse;
 id |    kurs
----+------------
  1 | PostgreSQL
  2 | MySQL
(2 rows)

Time: 0,261 ms
test=*# select * from teilnehmer;
 id |    name
----+------------
  1 | Nicodaunha
(1 row)
Nun erstelle ich eine Tabelle, die mit kurs und teilnehmer auf die beiden Tabellen verweist und dazu noch ein Feld hat, wann da teilgenommen wird. Als Bonus noch ein Exclude-Constraint, der verhindert, daß ein und dieselbe Person 2 Kurse gleichzeitig oder überlappend belegt:

Code:
test=# create table teilnahme (kurs int references kurse, teilnehmer int references  teilnehmer, zeitraum daterange, exclude using gist (teilnehmer with =, zeitraum with &&));
NOTICE:  CREATE TABLE / EXCLUDE will create implicit index "teilnahme_teilnehmer_zeitraum_excl" for table "teilnahme"
CREATE TABLE
Time: 5,348 ms
test=*# insert into teilnahme values (1,1,'[2012-02-13,2012-02-17)');
INSERT 0 1
Time: 0,738 ms
test=*# insert into teilnahme values (2,1,'[2012-02-14,2012-02-16)');
ERROR:  conflicting key value violates exclusion constraint "teilnahme_teilnehmer_zeitraum_excl"
DETAIL:  Key (teilnehmer, zeitraum)=(1, [2012-02-14,2012-02-16)) conflicts with existing key (teilnehmer, zeitraum)=(1, [2012-02-13,2012-02-17)).

Andreas
akretschmer ist gerade online   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mehrere Tabellen verbinden? heinz2 Datenbanken 4 08.11.2011 13:13
2 Tabellen verbinden und nach Datum sortiert auslesen SpaceMonkey PHP Einsteiger 4 08.11.2011 09:39
[Erledigt] SQL-Abfrage / Tabellen verbinden Steeno Datenbanken 1 30.08.2011 18:03
Mehrere Querys klappen in PhpMyAdmin aber nicht in PHP djscaleo Datenbanken 36 15.05.2011 02:00
SQL Datenbank in divs und Tabellen ausgeben BeatrixKiddo Datenbanken 4 09.03.2011 14:28
[Erledigt] Tabellen verbinden und richtig ausgeben peterpanda Datenbanken 8 10.09.2010 11:18
[Erledigt] mehrere Tabellen über PHP script aus Datenbank auslesen alphabetisch... Janela Datenbanken 17 02.09.2010 20:18
Mehrer Tabellen aus Datenbank auslesen? Blade JavaScript, Ajax und mehr 5 17.11.2009 16:08
[Erledigt] 3 Tabellen verbinden - Join geht nicht Bernd-m Datenbanken 4 20.08.2009 11:59
Alle Relationen von Tabellen in einer Datenbank abfragen dreifragezeichen Datenbanken 10 22.04.2008 17:51
Datenbank verknüpfen oder verbinden? sugar Datenbanken 24 31.03.2008 16:27
2 Tabellen verbinden wo eien davon Auswahliste ist Beutel Datenbanken 1 20.03.2007 23:52
MySQL - mehrere tabellen verbinden freitz PHP Tipps 2005-2 1 02.07.2005 15:44
Tabellen ind Datenbank GrU3nL!nG Datenbanken 4 02.06.2005 22:42
Wie zähle ich mit php die Tabellen in einer Datenbank? b++ PHP Tipps 2004-2 2 15.11.2004 19:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
fremdschlüssel verknüpfen php, tabellen in datenbank verbinden, tabelle für kursteilnehmer, phpmyadmin primary key einer tabelle in andere eintragen, normalisierung teilnehmer-id nachname kurs-id

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum