2009-08-24 3 views
1

Ich habe eine einfache Tabelle mit autoinkrementierenden IDs und einer Textspalte. ID (int), Wert (nvarchar)sql db design Abrufen und Senden von Nennwerten

In einer anderen User-Tabelle habe ich diese ID als Fremdschlüssel. Wenn ich Daten unter Verwendung von Linq zu Sql abrufe, erhalte ich den Textwert der assoziierten ID in einem einfachen Anruf.

Was ist, wenn ich in die Benutzer-Tabelle speichern muss, wenn ich nur den Text und nicht die ID habe? Nur die ID wird im Usertable gespeichert.

bin ich dies nicht richtig?

+0

Nicht dass du es nicht tun kannst, aber warum verkomplizierst du dich mit 2 Tabellen. Haben Sie eine Tabelle namens Benutzer mit einer Auto-ID-Spalte und fertig sein. – madcolor

+0

was ich meine ist, Benutzer wählen 1 oder 5 Elemente und diese Artikel Namen können sich ändern. Ich wollte die Element-ID statt des Namens in der Benutzertabelle speichern. Muss ich die ID im Code verfolgen oder kann die Datenbank den Text automatisch mit der entsprechenden ID vergleichen, wie beim Abrufen? – zsharp

+0

Sie sollten die ID verfolgen. Wenn Sie einen 'Benutzer' aus der Datenbank holen, sollten Sie ein Benutzerobjekt mit Eigenschaften erstellen, damit Sie immer darauf verweisen können. d. h. user.id = 123 user.text = mytext .. usw. In Ihrem Szenario sollten Sie die ID als Schlüssel verwenden. – madcolor

Antwort

1

Möglicherweise müssen Sie Ihr Schema ein wenig besser erklären. Von dem, was Sie bisher haben, klingt es so, als hätten Sie zwei Tabellen, eine Values-Tabelle und eine User-Tabelle.

Values table 
    id (int) 
    value (varchar) 

User table 
    id (int) 
    value_id (int) 
    ... 

Es klingt wie Sie dann einige Informationen, die Sie in der Benutzertabelle für den Datensatz oder passende Datensätze einen Wert aus der Wertetabelle aktualisieren möchten bekommen. Wenn das stimmt, willst du etwas wie:

UPDATE User u 
JOIN Values v ON v.id = u.value_id 
SET <update field>=<update value> 
WHERE v.value = <matching value> 
+0

Ich habe so etwas gemacht, aber ist es eine gute Übung, eine weitere Tabelle zu erstellen, um Werte für 3 Textkategorien zuzuordnen? – zsharp

+0

Wenn Sie eine Eins-zu-Viele-Beziehung darstellen möchten (z. B. wenn ein Benutzer mit 0-3-Werten verknüpft werden könnte), ist es besser, dies mit diesem Zwei-Tabellen-Design zu tun, als etwas zu tun drei austauschbare Felder value_1, value_2 und value_3 in einer Tabelle. – Randy

Verwandte Themen