2016-04-03 11 views
0

ich ein Formular, in dem ich fülle folgende Dinge hinzufügen:Wie eine Datenbank entwerfen, wo ich verunsichert Anzahl der Elemente

Nick: SbsNick; 
Item: SomeItem1; Price: PriceOfItem1 
Item: SomeItem2; Price: PriceOfItem2 
Item: SomeItem3; Price: PriceOfItem3 
................................ 

Und ich kann Elemente hinzufügen mit unterschiedlicher Anzahl von Eingängen. Es bedeutet, dass jeder Nick unterschiedliche Anzahl von Elementen haben kann.

Ich möchte die Datenbank erstellen, wo ich

SELECT ? FROM items WHERE Item="SomeItem" 

und erhalten alle Scharten und Preise von SomeItem abfragen kann, dh ich so mit dem Tisch wollen am Ende:

Nick |Price 
------------- 
Jack |20 
BlackB |18 
Karl |25 
............. 

I habe ein Problem beim Entwerfen einer solchen Datenbank, weil ich das Gefühl habe, dass mir eine zusätzliche Dimension fehlt. Wenn ich eine Menge von Tabellen fixieren möchte, sehe ich, dass ich eine unbegrenzte Anzahl von Spalten in einer Tabelle brauche. Wenn ich eine Menge von Tabellen und Spalten binden möchte, sehe ich, dass sich Zellen wie ein Array verhalten müssen.

Gibt es eine clevere Möglichkeit, eine solche Datenbank zu entwerfen?

+1

Schritt 1 - Bestimmen Sie die Geschäftsanforderungen, die Sie erfüllen müssen. Schritt 2 - Entwerfen Sie eine Datenbank, die diese Anforderungen erfüllt. Schritt 3 - Schreiben Sie die Benutzeroberflächen, die mit Ihrer Datenbank kommunizieren. Mit anderen Worten, Sie tun Dinge in der falschen Reihenfolge. –

Antwort

1

Ich denke, dass Sie über relationale Datengrundlagen lernen müssen. Ich kann nicht verstehen, was genau dein Problem ist.

Sie benötigen drei Tabellen: USERS, ITEMS, PURCHASES. Eine für die Darstellung der Benutzer, eine weitere für die Elemente und die letzte für die Darstellung der Beziehung zwischen beiden.

USERS(ID_USER, NAME, NICK, REGISTER_DATE) 

ITEMS(ID_ITEM, DESCRIPTION, PRICE) 

PURCHASES(ID_PURCHASE, ID_USER, ID_ITEM, PRICE, PURCHASE_DATE) 

ich den Namen KäUFE verwendet habe, weil ich persönlich nicht über die genaue Art der Beziehung zwischen den Nutzern und Artikel im Problem wissen, frei sein, dass dritte Tabelle zu nennen, was Sie wollen.

Für jeden Einkauf, den der Benutzer in der Tabelle USERS oder in der Tabelle ITEMS ausführt, sind keine zusätzlichen Spalten erforderlich. Sie müssen lediglich eine neue Zeile in die Tabelle KÄUFE einfügen.

+0

Die Anzahl der Elemente, die Benutzer in meinem Fall hinzufügen können, ist sehr groß und Benutzer können nur einmal "kaufen". In Ihrer Lösung würde ich also in "Käufe" enden, wobei sich id_user in Form von Gruppen wiederholt. Ich sehe es funktioniert, aber ich frage mich, ob es ohne so große Tabelle "Käufe" getan werden kann –

+1

@FallenApart, das ist die übliche Art und Weise es zu tun (obwohl ich immer noch nicht Ihre Anforderungen/Business-Logik). Wir nennen es relationale Datenbank, weil wir Relationen zwischen Elementen/Objekten/Entitäten definieren, wie RubioRic vorgeschlagen hat. –

+0

@PaulSpiegel Problem mit meiner Sicht war, dass ich naiv dachte, dass ich es vermeiden kann, solche Tisch- "Purchases" zu schaffen. Aber deine Lösung wird für mich funktionieren und ich benutze sie. –

Verwandte Themen