Ich möchte mehrere inhaltlich unterschiedliche Tabellen anlegen. Jede Ausprägung der Tabellen ist ein Artikel in einem Shop und soll eine Artikelnummer per Auto increment bekommen. Die Artikelnummern sollen aber Datenbankweit eindeutig sein. Wie soll ich das in MySQL machen?
Announcement
Collapse
No announcement yet.
Auto increment
Collapse
X
-
Mit einem Autoinc? Überhaupt nicht.
Aber das macht auch nichts, denn Dein Ansatz ist auch falsch. Es ergiebt keinen Sinn für jeden unterschiedlichen Artikel eine unterschiedliche Tabelle zu erstellen.
Erstell dir eine Tabelle Artikel. Dort kommen allgemeine Informationen wie Name, Anzahl, Preis, Artikeltyp etc. hinein.
Für die speziellen Informationen kannst Du dann weitere tabellen anlegen, die per RI an den Allgemeinen Artikel hängen. Anhand des Artikeltyps weißt Du dann, in welche Tabellen Deine Anwendung verzweigen muss. Das ganze kannst Du natürlich soweit schachteln wie es sinnvoll ist und benötigt wird.
DimZitat Tom Kyte:
I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.
-
Also um es ein bisschen zu verdeutlichen soll das Ziel folgendermaßen aussehen:
Es gibt verschiedene Kategorien von Artikel (Lautpsprecher, Endstufen und Subwoofer, um mal drei davon zu nennen). Jede Kategorie hat eine unterschiedliche Anzahl an Eigenschaften (also an Spalten wie z.B. Belastbarkeit, Leistung und Aufbau). Alle Artikel sollen aber eine eindeutige Artikelnummer haben. Mir ist nicht ganz klar wie meine Befehle (mit oben genannter Lösung) lauten müssten wenn ich z.B. alle Endstufen anzeigen lassen wollte???
Um nicht für jede Tabelle extra einen Befehl schreiben zu müssen, muss der SELECT Befehl also bei der Tabelle Artikel ansetzen?
SELECT *
FROM Artikel
WHERE...???
Comment
-
Mit deinem Ansatz geht das nicht. Du brauchst eine übergeordnete Tabelle mit den allgemeinen Eigenschaften (und wenn es auch nur die Artikelnummer und der Artikeltyp sei). Darunter kommen dann die speziellen Tabellen, die die Besonderheiten der einzelnen Artikel wiedergeben.
DimZitat Tom Kyte:
I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.
Comment
-
RI=Referential Integrity sprich eine Primary Key - Foreign Key Beziehung. Die ist natürgemäß 1:n oder 1:1
DimZitat Tom Kyte:
I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.
Comment
-
es tut mir leid, aber ich steh auf dem Schlauch... ich weiß einfach nicht wie ich weiter machen soll... hier die Tabellen:
Welche beziehungen sollen nun wie verlaufen? Datenbanken sind nicht gerade mein Gebiet, aber ich hab leider keine andere Möglichkeit.
Comment
-
Genau. Du hast noch einen technischen Primary Key in der Tabelle Artikel vergessen. Die Artikelnummer würd ich nicht als PK verwenden, da es sich um einen fachlichen Wert handelt.
Die drei anderen Tabellen bekommen dann ebenfalls ein neues Feld, dass den PK der Artikeltabelle referenziert.
DimZitat Tom Kyte:
I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.
Comment
-
Ok, demnach sieht meine Lösung folgendermaßen aus...
wenn nun ein Kunde z.B. alle Endstufen eines bestimmten Herstellers sehen will, wie muss dann bei diesem Aufbau der SQL-Befehl aussehen?
Oder wenn der Kunde eine ArtikelNr eingibt und dann alle dazu gehörenden Informationen sehen will...
SELECT *
FROM *
WHERE ArtikelNr = xxxxxxx (wobei xxxxxx für die eingegebene ArtikelNr steht)
oder
SELECT *
FROM *
WHERE Artikel_idArtikel = (SELECT idArtikel
FROM Artikel
WHERE ArtikelNr = xxxxxx)Zuletzt editiert von vazei; 04.05.2010, 11:15.
Comment
-
Comment