2009-04-16 4 views
1

Die Webanwendung wird in klassischem ASP mit einem MSSQL-Backend geschrieben. Auf dieser Seite kann der Administrator 1 oder einen beliebigen oder alle Mitarbeiter auswählen, denen das Projekt zugewiesen werden soll. Ich versuche, eine einfache Möglichkeit zu finden, die Angestellten-IDs der Personen, die ihr zugewiesen sind, in einer Spalte zu speichern.Speichern von mehreren Mitarbeiter-IDs in einer Datenspalte

Die Liste der Mitarbeiter wird aus einer anderen Tabelle erzeugt und kann dynamisch (Brennen oder bei der Miete), so möchte ich das Programm flexibel genug sein, auf der Grundlage dieser Tabelle ändert sich ändern.

Grundsätzlich müssen Sie wissen, wie Sie einem Projekt mehrere Personen zuweisen, die später auf einer anderen Seite oder aus einer anderen Abfrage aufgerufen werden können.

Sorry für die N00bish Frage, aber danke!

Antwort

3

Sie müssen eine andere Tabelle erstellen, in der diese Werte wie. Diese neue Tabelle würde also eine Zeile für jede ID speichern und dann mit der ursprünglichen Datensatz-ID zurück zum ursprünglichen Datensatz verknüpfen.

11

Speichern Sie nicht mehrere IDs in einer Spalte! Erstellen Sie eine weitere Tabelle mit dem Primärschlüssel Ihrer vorhandenen Tabelle und einer einzelnen ID, die Sie speichern möchten. Sie können dann mehrere Zeilen in diese neue Tabelle einfügen und eine Beziehung von 1: m (eins zu viele) erstellen. Zum Beispiel, lassen Sie uns bei einer Bestellung Tabelle aussehen:

order: 
    order_id 
    order_date 

und ich habe eine Produkttabelle ...

product: 
    product_id 
    product_name 

Nun könnte man die Straße des Hinzufügens einer Spalte nach unten gehen zu, dass Sie bestellen lassen Liste die Produkte in der Reihenfolge, aber das wäre schlechte Form. Was Sie stattdessen wollen, ist so etwas wie ..

order_item: 
    order_item_id 
    order_id 
    product_id 
    quantity 
    unit_price 

Sie können dann ein alle Produkte für einen bestimmten Auftrag zu erhalten führen beitreten ...

select 
    product.* 

from orders 

inner join order_item on order_item.order_id = order.order_id 
inner join product on product.product_id = order_item.product_id 

where orders.order_id = 5 

Hier ist ein Beispiel order_id von 5, und Dies wird alle Produkte in dieser Reihenfolge erhalten.

+0

Während dies ein wenig zu eingehend sein kann, ist dies immer noch eine gute Ressource: http://en.wikipedia.org/wiki/Database_normalization –

+0

Hoffe, dass Sie nichts dagegen haben die Edit- Ich wollte dort betonen . Dies ist leider ein all-to-common Antipattern. –

Verwandte Themen