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 24-11-2008, 13:19
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard FOREIGN KEYs

Hallo zusammen,


Als ich letztens nach einer Software suchte um meine MYSQL-Datenbank (Version 5.0.37) grafisch darzustellen (verbindungen, verknüpfungen, etc, ..) stiess ich immer wieder auf "FOREIGN KEYs". Also machte ich mich auf die Suche danach, wurde aber leider auf keiner deutschsprachigen Seite/Doku/etc. zufrieden gestellt was meine Fragen betraf.

Kann ich nachträglich solche speichern/vermerken?
-> Wenn ja, hat das direkte auswirkungen auf vorhandene Querys/Scripte?
-> Wenn ja, wie mache ich das nachträglich?
-> Wenn nein, gibts sonst eine Möglichkeit solche zustande zu bekommen?


Ziel des ganzen ist es, dass ich eine Übersicht einer Datenbank bekomme, welche Tabelle worauf Bezug zieht, etc. - ich denke man weiss schon worauf ich hinaus will.


Besten Dank schonmal im Voraus!
Mit Zitat antworten
  #2 (permalink)  
Alt 24-11-2008, 13:31
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard Re: FOREIGN KEYs

Zitat:
Original geschrieben von medium22
Kann ich nachträglich solche speichern/vermerken?
Klar

Zitat:
Original geschrieben von medium22
-> Wenn ja, hat das direkte auswirkungen auf vorhandene Querys/Scripte?
Im Prinzip erstmal keine. Je nach dem, wie du die Beziehung setzt, könnten deine Scripte aber in falschen Reihenfolgen arbeiten und Beispielsweise Keys setzen, die es noch gar nicht gibt. Solltest du allerdings sauber gearbeitet haben, sollte es nur in extremen Ausnahmefällen zu irgendwelchen Problemen bzw. Umstellungen kommen.


Zitat:
Original geschrieben von medium22
-> Wenn ja, wie mache ich das nachträglich?
Genau so wie sonst auch. Das MySQL Handbuch liefert dir Antworten.
Mit Zitat antworten
  #3 (permalink)  
Alt 24-11-2008, 13:39
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Re: FOREIGN KEYs

Zitat:
Original geschrieben von unset

Im Prinzip erstmal keine. Je nach dem, wie du die Beziehung setzt, könnten deine Scripte aber in falschen Reihenfolgen arbeiten und Beispielsweise Keys setzen, die es noch gar nicht gibt...
Quatsch, man definiert einen Constraint um genau sowas abzufangen. Die DBMS wirft in diesem Fall sofort eine Fehlermeldung ab.
Mit Zitat antworten
  #4 (permalink)  
Alt 24-11-2008, 13:57
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard Re: Re: Re: FOREIGN KEYs

Zitat:
Original geschrieben von asp2php
Quatsch, man definiert einen Constraint um genau sowas abzufangen. Die DBMS wirft in diesem Fall sofort eine Fehlermeldung ab.
Womit es direkte Auswirkungen auf vorhandene Queries hat ...
Mit Zitat antworten
  #5 (permalink)  
Alt 24-11-2008, 14:03
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das hast du in deinem vorigen Post nicht gesagt. Es sah eher danach aus, dass man munter Leichen in die DB schreiben könnte.
Mit Zitat antworten
  #6 (permalink)  
Alt 24-11-2008, 20:16
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hallo,


Ich hoffe doch das ich soweit sauber gearbeitet habe - das würde sich dann schon bemerkbar machen wenn nicht *feix*

Ich hab mal MySQL Handbuch rumgestöbert und dieses hier gefunden - ich gehe mal davon aus dass das das richtig ist. Nur verstehe ich das ganze nicht so ganz.

Müsste es auf meine DB gemünzt nun in etwa so aussehen?

Tabellen:
user: id, name, logins, ...
pn: pnid, pn_from, pn_to, pn_text, ...
log: id, cid, editor, time, ...
...

Fett dargestellt sind jene die sich auf die Tabelle user (id) beziehen.

Code:
ALTER TABLE pn
    FOREIGN KEY [id] (pn_from, pn_to)
    REFERENCES user (id)
Ich teste sowas nur ungern an einem Liveobjekt, daher frage ich lieber nach bevor ich etwas abschiesse *g* Würde das denn so passen oder gehe ich in die komplett falsche Richtung?
Mit Zitat antworten
  #7 (permalink)  
Alt 24-11-2008, 21:21
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

Zitat:
Würde das denn so passen oder gehe ich in die komplett falsche Richtung?
Nö, das sieht ganz gut aus. Die eckigen Klammern bei [id] bedeuten aber, dass dieser Teil optional ist, d.h. die Klammern nicht mitverwenden.
Mit Zitat antworten
  #8 (permalink)  
Alt 24-11-2008, 22:26
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von medium22

Ich teste sowas nur ungern an einem Liveobjekt, daher frage ich lieber nach bevor ich etwas abschiesse *g* Würde das denn so passen oder gehe ich in die komplett falsche Richtung?
Oh Gott, wasfür Entwickler bist du denn? Man hat immer einen Kopie lokal zum Entwickeln, wenn alles gut läuft, ausführlich getestet, erst dann live schalten (hochladen)
Mit Zitat antworten
  #9 (permalink)  
Alt 24-11-2008, 23:50
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von asp2php
Das hast du in deinem vorigen Post nicht gesagt. Es sah eher danach aus, dass man munter Leichen in die DB schreiben könnte.
Naja, ich habs zitiert. Wenn man ohne FKs in der falschen Reihenfolge angelegt hat, dann auf FKs steigt, wird man Probleme bekommen. Nichts, dass man nicht aus der Welt schaffen kann, aber eine on the fly migration ist das nicht mehr.
Mit Zitat antworten
  #10 (permalink)  
Alt 07-02-2009, 19:52
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

N'abend zusammen,


Nach langer Zeit komme ich nun mal wieder dazu daran rumzuwerkeln und auszutesten.

Folgendes habe ich erfolglos versucht

Code:
ALTER TABLE fragen
  FOREIGN KEY (kat)
  REFERENCES fragen_kat (id)
Die beiden Tabellen die das betrifft

fragen_kat:
- id (int(11))
- kategorie (tinytext)

fragen (gekürzte Version):
- id (int(11))
- kat (int(11))
- frage (tinytext)
- erstellt_von (int(11)

Beide Tabellen sind InnoDB.

Ziel ist es nun, "kat" aus der fragen-Tabelle, der id aus der Kategorientabelle (fragen_kat) zuzuweisen. (selbiges sollte später auch noch mit anderen Teilen passieren, aber das ist nun erstmal nicht der Punkt..)


Fehlermeldung ist: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOREIGN KEY (kat) REFERENCES fragen_kat (id)' at line 2

Warum funktioniert das so nicht? Liegt da irgendwo ein Hund den ich nicht sehe?


Gruss
Mit Zitat antworten
  #11 (permalink)  
Alt 07-02-2009, 20:13
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Die richtige Syntax kannst du hier nachlesen:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #12 (permalink)  
Alt 07-02-2009, 20:32
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Wüsste ich (genau!) zu verstehen wie das alles gemeint ist hätte ich die Frage nicht stellen müssen - hatte mein Versuch auch aus dem Handbuch abgeleitet.

Selbst ein
Code:
ALTER TABLE fragen
  ADD [CONSTRAINT [symbol]]
    FOREIGN KEY  (kat)
    REFERENCES fragen_kat (id);
erzeugt eine Fehlermeldung. "symbol" wird auch nirgends beschrieben - leider.
Mit Zitat antworten
  #13 (permalink)  
Alt 07-02-2009, 21:35
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Und wo war bspw. das ADD in deinem vorherigen Statement?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #14 (permalink)  
Alt 07-02-2009, 22:24
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Nicht vorhanden - ging nicht davon aus das es so wichtig ist. Aber selbst mit erzeugt es dieselbe Fehlermeldung.
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 15:24 Uhr.