Hilfe bei erstellen einer DB

MrSnake

Mitglied
Ich bin derzeit in einer Umschulung zum Anwendungsentwickler und das Thema MySQL war bisher noch nicht bei uns dran - daher benötige ich beim erstellen einer Datenbank für ein privates Projekt Hilfe.

Es ist keine riesengroße DB - es sind nur 3 Tabellen enthalten. Diese sollen untereinander Verknüpft werden

Haupttabelle: Troops
- TroopName (VarChar)
- Kingdom (Integer)
- Type (Integer)

Hilfstabelle: Kingdoms
- KingdomNr (Integer)
- Kingdom (VarChar)

Hilfstabelle: Types
- TypeNr (Integer)
- Type (VarChar)

Die Integerwerte der Hilfstabellen sollen dabei automatisch vergeben werden sobald eine neuer Datensatz eingetragen wird. Die Integerwerte der Haupttabelle sollen dann mit den Integerwerten der Hilfstabelle verknüpft werden.

WAS muss ich WO einstellen damit dies funktioniert?
Ich hab schon einiges probiert mit PrimaryKey und Unique aber das hat alles nicht funktioniert. MySQL ist bisher noch ein Buch mit Sieben Siegeln - ich brauch die Datenbank aber damit ich weiter an meinem privaten Java-Projekt arbeiten kann...

Könnte mir bitte jemand helfen?
 

Thallius

Top Contributor
Womit versuchst du die DB denn zu erstellen ?

Ansonsten sollte deine Haupttabelle auch einen autoincrement index haben, wie eigentlich jede Tabelle.

also

CREATE TABLE troops (troop_id INT AUTO_INCREMENT PRIMARY KEY, troop_name VARCHAR(XXX), INDEX USING BTREE (troop_name), troop_kingdom INT, troop_type INT)

Ich habe mal einen Index auf den Namen gesetzt. Keine Ahnung ob du den brauchst aber dann weißt du auch wie das geht.

Den anderen Tabellen ensprechend.
 

MrSnake

Mitglied
Ich hab die DB direkt über XAMPP im phpMyAdmin angelegt.

Die Haupttabelle braucht eigentlich (meiner Meinung nach) keine Nummerierung der Einheiten - der Name jeder Einheit ist einzigartig.

Wenn ich Daten bei Kingdoms einfügen will schreibt er mir
INSERT INTO `kingdoms`(`kingdomnr`, `kingdom`) VALUES ([value-1],[value-2])

Dabei sollte er eigentlich nur den zweiten Wert von mir haben wollen und den ersten automatisch erstellen.

Die Frage ist halt - was stell ich phpMyAdmin unter Struktur bei den Hilfstabellen und der Haupttabelle ein?
Wenn ich Dein Beispiel richtig verstehe Thallius, dann muss ich bei den Hilfstabellen die KingdomNr bzw TypeNr auf Index stellen und nicht PrimaryKey oder Unique auswählen. Muss ich dann bei der Haupttabelle für die Spalten auch was einstellen damit er weiß dass diese Ziffern auf den Index der Hilfstabelle verweisen?
 

Joose

Top Contributor
Dabei sollte er eigentlich nur den zweiten Wert von mir haben wollen und den ersten automatisch erstellen.
Dann musst du das AUTO_INCREMENT einstellen

Die Frage ist halt - was stell ich phpMyAdmin unter Struktur bei den Hilfstabellen und der Haupttabelle ein?
Wenn ich Dein Beispiel richtig verstehe Thallius, dann muss ich bei den Hilfstabellen die KingdomNr bzw TypeNr auf Index stellen und nicht PrimaryKey oder Unique auswählen. Muss ich dann bei der Haupttabelle für die Spalten auch was einstellen damit er weiß dass diese Ziffern auf den Index der Hilfstabelle verweisen?
Nein bei der Hilfstabelle kannst du KingdomNr als PrimaryKey lassen, in deiner Haupttabelle muss Kingdom dann ein ForeignKey sein.
 

MrSnake

Mitglied
Ich hab mich jetzt wieder hinter meine DB geklemmt und konnte das Problem mit dem Auto-Increment lösen! Jetzt hänge ich aber bei den Verknüpfungen fest...

Ich bin im Designer und möchte folgende Verknüpfung erstellen:

Tabelle: kingdoms
Spalte: kingdom_nr - INT(2), Primärschlüssel

mit

Tabelle: troops
Spalte: kingdom - INT(2)

Dabei kommt jedoch die Fehlermeldung "Fehler: Fehlender Index über Spalte(n)"
Tante Google hat mir bisher nicht wirklich verraten können wo ich etwas übersehe...
 

MrSnake

Mitglied
Nach mehrfachem löschen und neu importieren der DB hab ich es doch tatsächlich alleine hinbekommen^^

Wenn ich nun eine Anfrage an die DB sende und ein Resultset mit Zeilen fülle bekomme ich natürlich erstmal nur eine Zeile mit einem String (dem Namen einer Einheit) und mehreren Zahlen, die Zahlen sind ja mit anderen Tabellen verknüpft...

Mein jetziges Query für das Resultset -> SELECT * FROM `troops`;

Nun versuche ich natürlich die Zahlen direkt durch die Werte aus den Hilfstabellen zu ersetzen - das klappt leider nicht wirklich - kann bitte jemand meinen Syntax korrigieren:

SELECT troop_name, kingdoms.kingdom_name, types.type
FROM troops
JOIN kingdoms WHERE troops.kingdom=kingdoms.kingdom_nr
JOIN types WHERE troops.type=types.type_nr;


Wenn ich nur den Punkt mit JOIN kingdoms nehme klappt es noch - sobald ich JOIN types dazunehme ist Ende^^

MySQL meldet:

#1064 - You have an error in your SQL syntax;
 

Thallius

Top Contributor
Es muss ON heissen und nicht WHERE.....

WHERE bezieht sich immer auf die gesammte Abfrage und kann nur einmal vorkommen, nämlich hinter allen FROM und JOINS....
 

MrSnake

Mitglied
Danke, so funktioniert es!
Somit bleibt nur noch ein letztes Problem und das Thema hier ist endlich gegessen^^

In der Haupttabelle "troops" sind 2 Spalten "mana1" und "mana2" die beide mit der Hilfstabelle "mana_types verknüpft sind - jetzt muss ich in meinem query das ganze nur noch korrekt unterbringen dass er beide Werte aus der gleichen Hilfstabelle holt...

Mit diesem query holt er mir schonmal den String für mana1 - wie krieg ich da jetzt noch aus der gleichen Hilfstabelle den String für mana2?

Code:
SELECT troop_name, kingdoms.kingdom, types.type, mana_types.mana, cost, rarities.rarity
FROM troops
JOIN kingdoms ON troops.kingdom=kingdoms.kingdom_nr
JOIN types ON troops.type=types.type_nr
JOIN mana_types ON troops.mana1=mana_types.mana_nr
JOIN rarities ON troops.rarity=rarities.rarity_nr
ORDER BY troop_name

Zur besseren Übersicht hab ich mal ein Bild vom Designer zugefügt...
 

Anhänge

  • Designer.JPG
    Designer.JPG
    33,3 KB · Aufrufe: 40

Thallius

Top Contributor
Code:
SELECT troop_name, kingdoms.kingdom, types.type, mana_types.mana, cost, rarities.rarity
FROM troops
JOIN kingdoms ON troops.kingdom=kingdoms.kingdom_nr
JOIN types ON troops.type=types.type_nr
JOIN mana_types AS mana1 ON troops.mana1=mana1.mana_nr
JOIN mana_types AS mana2 ON troops.mana2=mana2.mana_nr
JOIN rarities ON troops.rarity=rarities.rarity_nr
ORDER BY troop_name
 

Thallius

Top Contributor
Es ist übrigens keine feine Art aufzählende Spalten zu verwenden. In Deinem Fall als mana1, mana2 etc. Dafür benutzt man CrossreferenzTabellen.

Sprich du legst eine Tabelle an

xtroopsmana

troopnr
mananr

und schon kann jede Truppe soviel mana haben wie es will.
 

MrSnake

Mitglied
Scheint nicht zu funktionieren - es kommt die Meldung:

Unknown column 'mana_types.mana' in 'field list'

Muss dann oben in der SELECT Zeile noch etwas angepasst werden?

Das mit dem CrossReferenz wird nach kurzem einlesen schon ein wenig zu tief für mich in der Materie. Laut Plan habe ich aber in 3 Wochen meinen MySQL Block in der Umschulung - da werde ich sowas sicherlich auch noch beigebracht bekommen!
 

Thallius

Top Contributor
Code:
SELECT troop_name, kingdoms.kingdom, types.type, mana1.mana, mana2.mana, cost, rarities.rarity
FROM troops
JOIN kingdoms ON troops.kingdom=kingdoms.kingdom_nr
JOIN types ON troops.type=types.type_nr
JOIN mana_types AS mana1 ON troops.mana1=mana1.mana_nr
JOIN mana_types AS mana2 ON troops.mana2=mana2.mana_nr
JOIN rarities ON troops.rarity=rarities.rarity_nr
ORDER BY troop_name

Sorry aber da hättest jetzt auch selber drauf kommen können....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Edin JDBC Hilfe Datenbankprogrammierung 2
B MySQL Umkreissuche - brauche Hilfe bei SQL Statement Datenbankprogrammierung 12
I Hilfe zu Multidimensionalen Datenbanken Datenbankprogrammierung 1
J Brauche Hilfe bei meinem Programm ! Datenbankprogrammierung 12
M SQL-Statement Hilfe bei SQL-Abfrage Datenbankprogrammierung 2
H Brauche Hilfe beim Mappen von 3 Tabellen a 1:n mit hbm.xml. Datenbankprogrammierung 34
J Java Eclipse Hilfe beim Programmieren Datenbankprogrammierung 7
N Hilfe bei Projekt Datenbankprogrammierung 4
F Brauche dringend Hilfe Java-Access Connection Datenbankprogrammierung 3
U PostgreSQL Hilfe bei Statementsyntax Datenbankprogrammierung 2
M SQL UPDATE richtig anwenden BITTE um HILFE Datenbankprogrammierung 3
M Hilfe bei grundlegendem Ansatz Datenbankprogrammierung 2
M Bitte um Hilfe bei Wahl einer Datenbank Datenbankprogrammierung 3
M hilfe zur einer Exception Datenbankprogrammierung 2
G Hilfe um String an Datenbank zu schicken Datenbankprogrammierung 3
J brauche HILFE: java.lang.NoSuchMethodError: calculateSecurityWarningPosition Datenbankprogrammierung 2
E Dringend Hilfe Firebird/Jaybird verbindet nicht; im jar file Datenbankprogrammierung 4
S Benötige Hilfe mit DB Treiber Datenbankprogrammierung 4
P Benötige etwas Hilfe bei Datanbankabfrage über Java Datenbankprogrammierung 3
M Hilfe -Access mag sein Replace nciht merh Datenbankprogrammierung 2
G Hilfe: Werte sind alle x2 (oder mehr) nach JOIN Datenbankprogrammierung 13
M Hilfe - keine Connection zur DB Datenbankprogrammierung 4
M ORA-00911: invalid character . Hilfe! Datenbankprogrammierung 10
N Hilfe ! Mein Applet bekommt ein Access-Denied von MySQL Datenbankprogrammierung 7
I Hilfe bei umstellung. Datenbankprogrammierung 2
K Hilfe bei SQL-abfrage Datenbankprogrammierung 7
R Hilfe! Negative Zeitangabe Datenbankprogrammierung 2
I hilfe! java.sql.SQLException Datenbankprogrammierung 7
B Hilfe! Problem bei Verbindung über JDBC/ODBC Datenbankprogrammierung 4
D Brauche hilfe bei Delete mit Datum! Datenbankprogrammierung 4
T HILFE: MySQL und tomcat-5.5.4 == Name jdbc is not bound in t Datenbankprogrammierung 3
R Hilfe mit Umlauten und MSSQL Datenbankprogrammierung 10
G Hilfe bei Query für Spaltenansicht. Datenbankprogrammierung 20
6 Hilfe beim Einstieg Datenbankprogrammierung 15
D brauche mal kurz hilfe bei einem select-stmt Datenbankprogrammierung 6
M hilfe, wo bekomme ich Lektüre her? Datenbankprogrammierung 4
T Datenbank: Tabelle erstellen bei Web-Applikation Datenbankprogrammierung 4
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
L SQL Datenbank Tabelle erstellen Datenbankprogrammierung 6
claireannelage Automatisches Erstellen der gemammote Objekte in Entitäten Datenbankprogrammierung 8
M Sql Tabellen erstellen Datenbankprogrammierung 3
R Datenbanken erstellen Datenbankprogrammierung 3
G Eine Spalte in xampp als Typ array erstellen - ein array mit "insert" hinzufügen. Datenbankprogrammierung 3
M Oracle String aus Column splitten und x Rows daraus erstellen Datenbankprogrammierung 1
F Tabellen automatisch erstellen wenn sie nicht existieren Datenbankprogrammierung 6
S Beispiel-Blockchain + GUI mit Java erstellen Datenbankprogrammierung 0
Dimax Erstellen ResultSet und Statement Datenbankprogrammierung 30
X MySQL In MySQL Funktionen erstellen, wenn Zelle leer dann andere Zelle ändern? Datenbankprogrammierung 9
S Mit 2 Queries ein Objekt erstellen Datenbankprogrammierung 6
Z MySQL Session erstellen Datenbankprogrammierung 3
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
E Kann man in DB2 Boolean Spalten erstellen? Datenbankprogrammierung 1
E Warum kann ich keine Datenbank mit DB2 erstellen? Datenbankprogrammierung 2
M MySQL Tabellen dynamisch erstellen Datenbankprogrammierung 12
C Tabelle erstellen mit Apache JDBC-Util Datenbankprogrammierung 1
L Datenmodell erstellen für eine Nutzertanalyse Datenbankprogrammierung 1
M Connection erstellen Datenbankprogrammierung 1
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
F PAP erstellen Datenbankprogrammierung 0
C H2 Syntax fehler beim erstellen einer Tabelle Datenbankprogrammierung 4
M Grundlagen DB erstellen Datenbankprogrammierung 7
F MySQL Datenbank erstellen Datenbankprogrammierung 2
B Fremdschlüssel Constraint erstellen Datenbankprogrammierung 3
Z ER Diagramm erstellen (Entity-Relationship) Datenbankprogrammierung 4
P MySQL eine richtige Datenbank für einen routenplaner erstellen Datenbankprogrammierung 2
D MySQL Erstellen der richtigen Abfrage Datenbankprogrammierung 3
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
S Oracle Database 11g , eclipse , Tabelle erstellen Datenbankprogrammierung 2
2 MySQL Daten aus einer Array auslesen und MySQL Statment erstellen. Datenbankprogrammierung 5
J Access Datenbank mit JAVA erstellen - boolean Werte Datenbankprogrammierung 4
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
P DatenBanken mit Netbeans erstellen Datenbankprogrammierung 17
J Erstellen der SessionFactory in Hibernate 4.1 Datenbankprogrammierung 2
P Mittels Java einen neuen MySQL User erstellen Datenbankprogrammierung 4
H SQLite Datenkbank erstellen Datenbankprogrammierung 3
I Zugriff auf Datenbank nach Erstellen einer Executable Jar Datei verweigert Datenbankprogrammierung 10
L Derby/JavaDB Fehler beim Erstellen einer Tabelle Datenbankprogrammierung 2
NoXiD Access Datenbank in java einbinden ohne ODBC treiber zu erstellen Datenbankprogrammierung 5
F Baumstruktur erstellen und Art Tabelle festhalten!? Datenbankprogrammierung 13
M Datenbank mit Hibernate erstellen Datenbankprogrammierung 5
D Datenbank erstellen werde einfach nicht schlau Datenbankprogrammierung 13
Y Datenbank erstellen Datenbankprogrammierung 22
I mit Java SQL Attribute / Tabellen erstellen Datenbankprogrammierung 17
J Jar File erstellen Datenbankprogrammierung 8
C XLS Datei aus Datenbank erstellen Datenbankprogrammierung 14
P SQL Views mit java erstellen Datenbankprogrammierung 14
vandread mySQL Datenbank erstellen? Datenbankprogrammierung 4
M ParsingLogsTool erstellen... Datenbankprogrammierung 3
A Problem mit Erstellen der Verbindungs-URL mit der Datenbank Datenbankprogrammierung 2
M MySQL Datenbanktabelle erstellen Datenbankprogrammierung 10
N csv datei erstellen Datenbankprogrammierung 2
G Formulare erstellen Datenbankprogrammierung 2
G Entity Realtionship Model erstellen Datenbankprogrammierung 11
M JavaDB/Derby: Tabellen erstellen Datenbankprogrammierung 8
V mdb-file erstellen? Datenbankprogrammierung 20
A Datenbankanwendung erstellen Datenbankprogrammierung 12
D Erstellen einer neuen Datenbank Datenbankprogrammierung 3
K Wo "Connection" Object erstellen? Datenbankprogrammierung 7
A DB erstellen und initialisieren Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben