[MS SQL] Wie Eindeutigkeit/UNIQUE herstellen bei folgender Tabelle?

Dabei seit
Mai 2003
Beiträge
132
sers,

hab hier folgende tabelle mit übersetzungen gebröselt.

Code:
trn_ID | trn_german | trn_langID | trn_translation | trn_content | trn_frontend

primärschlüssel ist atm trn_ID

ein datensatz für mehrere sprachen sähe als wie folgt aus

Code:
1 | 1 KG-Dosen | 1 | 1 kg-Dosen       | 1 | 0
2 | 1 KG-Dosen | 2 | Tin Box for 1 kg | 1 | 0
nur wie soll ich da ne eindeutigkeit festlegen ?

hatte erst an trn_translation als unique gedacht aber teilweise werden 2 unterschiedliche deutsche begriffe zb im italienischen gleich übersetzt. sprich doppelte daten. bei trn_german gehts wie aus obigem beispiel ersehen auch nicht da jeder satz genau 7 mal vorkommt (übersetzung in 7 sprachen inkl. deutsch).

wie soll ich da nun ne eindeutigkeit machen ?


ps: benutze mssql und mssql enterprise manager.
 

Sgt_H4rtman

Ensign
Dabei seit
Dez. 2003
Beiträge
254
Hi,

also die Lösung musst du schon selbst finden, da nur Du die logischen Zusammenhänge kennst. Ich würde Dir nur mal den Tip geben, dass wenn man die Eindeutigkeit nicht über eine Spalte herstellen kann, Du dir überlegen solltest, wieviele Felder du benötigst um die Eindeutigkeit festzulegen und über diese Spalten dann den Index zu erzeugen. MS SQL beherrscht dies sicherlich genauso wie alle anderen großen DBMS.


Ciao
 

ag3nt

Lieutenant
Dabei seit
Okt. 2002
Beiträge
689
Hmm also sorry wenn ich da jetzt was falsch verstehe, aber es ist ziemlich wiedersprüchlich was du da schreibst, du hast einen Primärschlüssel aber die Daten sind nicht eindeutig zuordbar?
Erkläre mal was genau trn_ID beschreibt, denn Daten werden immer anhand des PK zugeordnet oder zusätzlich anhand der Primärschlüsselkandidaten, aber du scheinst den PK bzw PKK immer noch zu suchen obwohl du ihn bereits hast *confused* -- entwirre den Knoten mal damit das ganze klarer wird.
 

Sgt_H4rtman

Ensign
Dabei seit
Dez. 2003
Beiträge
254
Zitat von ag3nt:
Hmm also sorry wenn ich da jetzt was falsch verstehe, aber es ist ziemlich wiedersprüchlich was du da schreibst, du hast einen Primärschlüssel aber die Daten sind nicht eindeutig zuordbar?
Erkläre mal was genau trn_ID beschreibt, denn Daten werden immer anhand des PK zugeordnet oder zusätzlich anhand der Primärschlüsselkandidaten, aber du scheinst den PK bzw PKK immer noch zu suchen obwohl du ihn bereits hast *confused* -- entwirre den Knoten mal damit das ganze klarer wird.

Hallo,

so wie ich das sehe hat er zwar nen PK (trn_ID) aber er sucht noch nach Kriterien, wie er wohl verhindern kann, dass ein Datensatz doppelt angelegt wird. Typischer Fall von DB-Design Marke Fachinformatiker (bin selbst einer ;)). Den PK trn_ID braucht er nicht, dieser dient wahrscheinlich nur dem UPDATE oder DELETE.

Als Hilfestellung:
Nimm halt nen Kombischlüssel (trn_german, trn_langID, trn_translation) als Primärschlüssel. Die von mir genannte Version ist wohl die konservativste. Damit sollte sich eigentlich der gewünschte Effekt - es sei denn ich liege mit meiner Annahme falsch - erzielen lassen.


Ciao
 

ronin_sebastian

Ensign
Ersteller dieses Themas
Dabei seit
Mai 2003
Beiträge
132
kombi schlüssel. erschreckend dass ich davon nun das erste mal höre. den als PK ok.
mal sehen wie des im enterprise manager einzustellen ist.


zur info es ging halt drum, dass eine übersetzung nicht doppelt eingestellt werden kann. sprich dass wenn einer die selben daten nochmal einträgt dass er dann meckert.

aber wenn einer nun statt zb : schraube | 2 | screw
eckschraube | 2 | screw

eingibt... dann sollte das dingen trotzdem drinlanden oder ?
 

ronin_sebastian

Ensign
Ersteller dieses Themas
Dabei seit
Mai 2003
Beiträge
132
aber das würdes ja auch nich bringen oder ?

der gibt 2mal gleiche deutsche entsprechung und gleiche sprachid ein dann aber ne jeweils andere übersetzung. dann hab ich das ja doch wieder doppelt oder ?!
 

Toaster

Lt. Commander
Dabei seit
Apr. 2001
Beiträge
1.266
Top