2017-06-08 2 views
0

Ich habe eine Tabelle namens minibar_bill und ich benutze es für den Nachweis der Ausgaben des Kunden. Ich versuche ein Hotel-/Rentensystem-Management aufzubauen.Datenbanken Design und Primärschlüssel komponiert

Ich dachte, dass ich eine Tabelle mit (id_bill, id_minibar_product, id_client)

Und ich möchte jene Informationen auf einer Rechnung hinzuzufügen, basierend auf bill_id ...

Minibar_bill machen könnte Wie soll ich es machen?

Ich meine ich so etwas haben wollen:

Id_bill(1) 
id_minibar_product(1,2,3) 
id_client(123) 

So ersten drei Datensätze werden:

1, 1, 123 
1, 2, 123 
1, 3, 123 

Und ich möchte, dass die id_bill auf Rechnung sein ... vielleicht könnte ich switch id_product mit id_bill

Wobei id_bill (1) - wäre der erste Rechnungsdatensatz in der Datenbank id_minibar_product (1,2,3) - wäre Produkt 1,2,3, was Nachteile hat um Client id_client (123) - Client-ID, die wir auf Rechnung verwenden, um Daten aus Client-Tabelle zu sammeln, um sie auf Rechnung zu drucken (ich werde C# für UI verwenden).

Was hat ich versucht:

Ich habe versucht, id_bill und id_product ein DB mit dem Feld zu machen, aber ich denke, es ist ein falscher Ansatz, da ich sie einen zusammengesetzter Primärschlüssel gemacht und ich kann sie nicht auf Fremdschlüssel hinzufügen, in Rechnungstabelle

+0

Sie haben fast jeden Konstruktionsfehler gemacht, den Sie hier haben könnten. Werfen Sie einen Blick auf diese: http://www.vertabelo.com/blog/technical-articles/modeling-a-database-for-recording-sales-part-1. Wenn Sie immer noch da sind und die Frage nicht ablehnen, werde ich eine Antwort geben, die einige Designprobleme hier erklärt –

+0

@ Nick.McDeermaid Ich habe mir das angesehen ... Das Problem ist, dass ich keine Lösung finden kann ein besseres Design ... selbst wenn ich meine Tabellennamen poste, sind sie in rumänischer Sprache ... und Sie werden nicht sehr viel verstehen ... Das Problem, das ich gegenüberstelle, ist, dass ich die folgenden Tabellen habe Rechnung, Zimmer, Minibar , Minibar_Bill und Minibar_Produkte. Was ich wünsche ist, Rechnung mit Minibar_bill zu verknüpfen, um den Status auf einer einzigen Rechnung aller Produkte aus Minibar zu haben, die von einem Kunden gekauft wurden ... –

+0

Wenn Sie Interesse an Lernen Suche nach "Rechnungsstellung in ms Zugriff "in Google gibt es viele Beispiele und Tutorials, die Ihnen helfen werden. hier eins: http://web.pdx.edu/~gerbing/325/Resources/Access.pdf –

Antwort

0

Hier sind einige Vorschläge für Ihr Design:

Es ist eine gute Idee, Dinge deskriptiv zu nennen, aber, wenn Sie eine Tabelle Minibar_bill genannt schaffen, dass inkonsequent und kurzsichtig sein wird, wenn Sie starten möchten Lade Filme auf dem Zimmer und Speisen auf dem Zimmer, Dienstleistungen usw. auf dem Zimmer. Ich schlage vor, Sie nennen es etwas generischer - entfernen Sie Minibar von all Ihren Tabellennamen.

Sie dürfen niemals kommagetrennte Werte in ein einzelnes Feld eingeben.

Es gibt eine Million Verkaufsdatenmodelle online, einschließlich, wie bereits vorgeschlagen, Vorlagen in MS Access. Es gibt keinen Grund das Rad neu erfinden

ich Ihnen vorschlagen, haben so etwas wie dieses

Client     A list of clients 
Products    A list of products you can be billed for (not just minibar) 
Bill     A client has zero or more bills (usually one) 
BillLine    A bill has zero ore more lines. Each line represents 
         One product being charged for on a bll 

So Bill der Header ist. Es hängt von Ihnen ab, ob Sie eine Spalte hinzufügen, die angibt, wann/in welcher Rechnung, wie bezahlt, usw., oder ob Sie ein separates Rechnungsmodul erstellen möchten.

Im Hinblick auf diesen Kommentar:

Was ich wünsche ist Rechnung zu verknüpfen, um minibar_bill den Status auf einer einzige Rechnung aller Produkte aus der Minibar zu haben, die von einem Kunden gekauft wurden, .

Wenn Sie eine separate Rechnungstabelle haben, können Sie die BillID darauf schreiben sie miteinander zu verbinden.

Ich bin nicht sicher, wenn Sie verstehen, dass alle diese Informationen in verschiedenen Tabellen vorhanden sind, und wenn Sie zum Beispiel eine Rechnung drucken, gehen Sie und sammeln Sie alle Informationen aus den verschiedenen Tabellen zu diesem Zeitpunkt.