Thread Datenbanknormalisierung
(11 answers)
Opened by pktm at 2009-09-10 16:51 2009-09-12T19:42:17 sid burn Ja, dem ist ja auch so. Produkte liegen in products und Stundenzettel in time_reports. Aber beides sind Dinge, die auf einer Rechnung auftauchen können, also in der Tabelle billing_positions. Und das muss irgendwie gehen. Nur weil produkte unterschiedliche Felder haben, bedeutet das ja nicht, dass man diese nicht mehr auf einer Rechnung zusammen fassen kann. Ich kann auch einer Rechnung sehr z.B. sehr wohl Festplatten und IT-Dienstleistung angeben und beides ist ein Produkt. Genauso verhält es sich mit Stundenzetteln. Wie bindet man also die beiden Dinge, die auf der Rechnung erscheinen können, untereinander an? Hier mal ein doofes Beispiel. weil dann keine FK-Überprüfung mehr möglich ist: billing_positions enthält die 4 Felder billing_position_id, position, position_type und position_fk_id. Type gibt dabei an, ob es sich um ein Produkt aus products handelt, oder aus time_reports. position_fk_id ist der jeweilig Fremdschöüssel. Das wäre eine Möglichkeit, aber ganz sicher keine, die erstrebenswert ist. So kann nämlich die Datenbank gar nicht mehr so einfach ausrechnen, was der Rechnungsbetrag ist. http://www.intergastro-service.de (mein erstes CMS :) )
|