Mehrere Datenbanktabellen mit einender Verknüpfen

andreano

Mitglied
Hallo liebe Freunde der Sonne :D ,
ich habe manchmal Ideen die am Anfang scheinen leicht zu sein -> draus folgt das die am Ende immer schlimmer und schlimmer werden :( .
Ich habe mir vorgenommen einer Bücherei (in kleiner Gemeinde ) zu helfen, da die Ihre Bücher immer noch auf den Kärtchen haben und jedes mal alles von der Hand eintragen müssen.

IFNO VOR AB
! ich bin Anfängern i php und mysql !

Habe mir gedacht das ich mir als ersten 5 verschiedene Tabellen in einer Datenbank erstellen werde .
Bücher Tabelle = bücher habe eine 4 stellige ID (zahlen & buchstaben)
Person Tabelle = Personen werden eine 5 stellige ID kriegen ( zahlen )
Ausgabe am ( timestamp ausgabe zeit ) Tabelle
Rückgabe am ( timestamp gekrigt am zeit ) Tabelle
Verarbeitung Tabelle


Bücher Tabelle (spalten)
-id-name des buches

Personen Tabelle (spalten)
-id-name-vorname-

Ausgabe am Tabelle (spalten)
-zeit Timestamp - (weiter brauche ich Hilfe bei der Logik )

Rückgabe gekriegt am Tabelle (spalten)
-zeit Timestamp - (weiter brauche ich hilfe bei der Logik )

Verarbeitung Tabelle
so jetzt kommen wir zu meiner Problem Tabelle!
-hier will ich eine Verarbeitung Tabelle erstellen
-in der muss ich die Sachen von der Bücher Tabelle, Personen Tabelle , Ausgabe zeit und die Rückgabe Zeit bearbeiten können

Mein Problem ist das ich nicht weiß ob meine Logik bei der Aufstellung der Tabellen richtig ist und wenn ja dann welche Spaltennamen ich für die Tabellen Ausgabe und Rückgabe noch einfügen soll!

Es soll noch die Möglichkeit geben den Timestamp der Tabelle Rückgabe zu verändern, wenn der Kunde das buch noch z.b. eine Woche lang Lesen will.

Ich brauche die Hilfe bei der Aufstellung der Logik und die Verbindung von mehreren Tabellen der Datenbank.

Danke im Voraus. ;)

PS. Wenn Grammatik Fehler da sind sorry wohne nicht lange hier ;)
Gruß Aleks
 
Tabelle Bücher
- Nummer (eignene Nummer der Bücherrei)
- ISBN Nummer (wäre vielleicht ganz nützlich)
- Titel
- Autor

Tabelle Kunden
- Nummer
- Vorname
- Nachname
- Strasse
- Postleitzahl
- Ort
- Telefon
- Geburtsdatum (falls es FSK ab 18 Bücher oder so etwas gibt)

Tabelle Verarbeitung
- Buchnummer
- Von
- Bis
- Kundennummer

Das sollte doch eigentlich reichen, wobei es sicher noch einige Felder geben dürfte die nützlich wären.
Beispielsweise die Altersfreigabe, oder ein Sperrvermekr beim Kunden wenn er schon mehrmal Bücher nicht pünktlich abgegeben hat, oder, oder, oder.

Wie du die Felder nennst, bleibt dir überlassen. Die Namen sollten halt klarmachen wofür sie stehen. Bei der Tabelle "Verarbeitung" könntest du eventuell noch ein Feld "Status" (0 = verliehen - 1 = reserviert) aufnehmen.
 
Ich würde es über 3 Tabellen lösen

Code:
[buecher]
id   | titel
-------------
1234 | Buch 1
1765 | Buch 2
5897 | Buch 3

[kunden]
id  | familienname
------------------
32  | Kunde 1
25  | Kunde 2
240 | Kunde 3
234 | Kunde 4

[ausleihe]
buch_id | kunde_id | ausleihe   | rueckgabe
--------------------------------------------
   1234 |       32 | 2011-10-26 | NULL           //Buch 1234 ist noch ausgeleihen
   1765 |      234 | 2011-09-25 | 2011-10-15     //Buch 1765 ist wieder zurück


Hier einige einfache Beispiele wie man das Konstrukt nachher auswerten kann

Herausfinden welche Bücher ausgeleihen sind (und bei wem)
SQL:
SELECT
	buecher.id,
	buecher.titel,
	kunde.familienname
FROM
	ausleihe
	INNER JOIN buecher
		ON ausleihe.buch_id = buecher.id
	INNER JOIN kunden
		ON ausliehe.kunde_id = kunden.id
WHERE
	ausliehe.rueckgabe = NULL;

Herausfinden welche Bücher länger als ein Monat ausgeliehen sind
SQL:
SELECT
	buecher.id,
	buecher.titel,
	kunde.familienname
FROM
	ausleihe
	INNER JOIN buecher
		ON ausleihe.buch_id = buecher.id
WHERE
	ausliehe.rueckgabe = NULL
	AND DATEDIFF(NOW(), ausleihe.ausliehe) > 31;
 
Wow Danke tombe, Yaslaw
so eine schnell Antwort habe ich nicht erwartet! und eure Lösungen mit 3 Tabellen sind mir auch erst sehr spät eingefallen.
tombe hat gesagt.:
Geburtsdatum (falls es FSK ab 18 Bücher oder so etwas gibt)
in meinem Fall wird es nicht gebraucht, weil es so was nicht gib.
Aber wenn mann es in der Großen Bücherei verwenden wollte sollte man wirklich ALLE deine angaben Beachten.

Yaslaw du hast Gewonnen ;) ,
ich werde dein Lösung mir als Denkanstoß vornehmen und es verwenden!
Aber auch einige Sachen von dem tombe werde ich auch übernehmen z.B.
tombe hat gesagt.:
"Status" (0 = verliehen - 1 = reserviert)

Noch mal DANKE

Gruß Aleks
 
Yaslaw frage wie Fügt mann die Kunde_id und gleichzeitig buch_id in eine Tabelle?
Ich soll die angaben doch aus den Vorherigen Tabellen entnehmen.
Kann ich vll. noch ein code-schnipsel der das macht von dir haben?;)

Danke im Voraus

Gruß Aleks
 
Zuletzt bearbeitet:
Na zuerst wählst du ja das Buch irgendwie aus, die Nummer steht dann z.B. in einem Textfeld. Dann gibst du die Kundennummer ebenfalls in ein Textfeld ein (oder wählst sie aus einer Liste aus).

Wenn alles erfasst ist, schickst du das Formular ab und diese beiden Werte übernimmst du dann in die SQL-Anweisung.

PHP:
$buch = mysql_real_escape_string($_POST["buch_nummer"]);
$kunde = mysql_real_escape_string($_POST["kunde_nummer"]);

$sql = "INSERT INTO tabelle (buch, kunde) VALUES('" .$buch ."', '" .$kunde ."')";
 
Für den Anfang habe ich genug info!
DANKE an alle beteiligten!

Ps. Frage wenn ich jetzt den Thead schließe und dann später noch ein frage habe kann ich den wieder aufmachen?
Oder muss ich ein neues erstllen?
 
Also wenn das hier erledigt ist, würde ich später einen neuen Beitrag aufmachen. Dort eventuell einen Link zu diesem Beitrag wenn es hilft.
 
Zurück