# Zwei SQL Fragen (MySQL Namenskonvention und JOIN Query)



## DarthShader (5. Oktober 2007)

Hallo,

ich muss demnächst ein etwas größeres Datenbankschema aufbauen. Ich konnte im Internet nicht wirklich etwas darüber finden, deshalb die Frage, gibt es für (in diesem Fall MySQL) Datenbanken, also deren Tabellen und Attribute bestimmte Namenskonventionen?

Nach dem Motto, eine Tabelle sollte mit dem Präfix "tbl" anfangen, in Camel-Case, aber nie nur Grossbuchsten etc..?


Die zweite Frage ist bezüglich einer Abfrage in SQL. Wenn ich eine Tabelle habe, könnte ich z.B. mit

SELECT * FROM Kunden WHERE Vorname='Porthos';

alle Kunden abrufen, die den Vornamen "Porthos" tragen. Aber wenn nun z.B. Verkäufe und Kunden in 2 Tabellen abgelegt ist, und ich möchte z.B. alle Verkäufe haben, deren Stückzahl 10 beträgt und es ein Kunde mit dem Vornamen "Porthos" war. Irgendwie muss man diese beiden Abfragen dann ja verbinden (Stichwort JOIN?):

SELECT * FROM Verkaeufe WHERE anzahl=10;
SELECT * FROM Kunden WHERE Vorname='Porthos';

Die Verkäufe-Tabelle hat eine Kunde-Spalte, dies ist ein Fremdschlüssel eben auf die Kundentabelle.
Wie sähe diese JOIN-Statement dann aus?


Vielen Dank für Eure Hilfe


----------



## merzi86 (5. Oktober 2007)

Zu deiner 2. Frage: Ich nehme jetzt mal einfach an du hast in der Verkaeufe Tabelle ein Feld mit KundenID oder so in der Art und in der Kunden Tabellen ebenfalls ein solches Feld.
Wie währe es wenn du die Tabellen darüber Verknüpfst?


```
SELECT * FROM Verkaeufe, Kunden WHERE Verkaeufe.KundenID=Kunden.KundenID AND Kunden.Vorname='Porthos' AND Verkaeufe.anzahl=10
```


----------



## DarthShader (5. Oktober 2007)

Ah ,das ist natürlich auch eine Idee, müsste funktionieren. 

Ich frage mich dann aber gerade, warum man JOINs hat bzw. verwendet? Das Normalisieren einer Datenbank bedeutet ja, die Daten auf mehrere Tabellen aufzuteilen um Redundanzen zu vermeiden. Und ich habe gelesen, mit den JOIN statements macht man diese Normalisierung wieder rückgängig, also nur für eine Abfrage.

Noch eine Frage nebenbei, Du hast "Verkaeufe.KundenID" verwendet, um auf "KundenID" in der Tabelle "Verkaeufe" zu verweisen. Macht es Probleme, wenn die Tabellennamen einen Punkt "." im Namen haben? Dann würde ja etwas da stehen wie "Kategorie.Verkaeufe.KundenID" - ob das Probleme macht?


----------



## merzi86 (5. Oktober 2007)

Das ist eine gute Frage hast Kategorie. als Prefix genommen oder?

Kann natürlich sein das er dadurch denkt das Kategorie die Tabelle ist das habe ich bis jetzt noch nie so probiert.


----------



## DarthShader (5. Oktober 2007)

Noch habe ich den Punkt noch nicht als Trennung für Präfixe genommen, aber ich hatte es eigentlich vor... ich werde es später heute einmal ausprobieren.


----------



## merzi86 (6. Oktober 2007)

Würde dir empfehlen ein Unterstrich als Trennung zu nutzen.
Kenne das von vielen Portalen und Boards und nutze das selber so, den Strich sieht man und man erkennt das ein neuer Teil des Tabellennamens beginnt.


----------

