Daten verschieben, die per Fremdschlüssel gebunden sind.
-
Donnerstag, 30. August 2012 16:04
Hallo
Ich bin ein kompletter Neuling in MSSql. - Ich habe die letzten 10 Jahre ausschließlich auf mySQL verbracht.
Ich stehe hier vor einem gedanklichen Problem und hoffe Ihr könnt mir hierbei weiterhelfen.
Folgendes:
Ich habe 2 Tabellen, die per Fremdschlüssel miteinander verbunden sind.
Es handelt sich um Artikel-Tabellen. - Die Master Tabelle enthält die üblichen Daten zum Artikel und die Child Tabelle hält Informationen über Lagerstand usw.
In der Master Tabelle habe ich ein paar Felder mit einander verknüpft und diese mit einem Unikalen Index versehen.
Aus statistischen Gründen möchte ich nicht, dass der Benutzer einen Artikel wirklich löschen kann und so habe ich ein Feld in der Master Tabelle angelegt mit dem Namen: Gelöscht -> Wenn dieses Feld den Wert 1 besitzt, wird der Datensatz dem User nicht mehr gezeigt. - Soweit, so gut.
Jetzt habe ich aber das Problem, wenn der Datensatz als Gelöscht markiert wurde und der Kunde den Artikel noch mal anlegen möchte, bekommt er auf Grund des Unikalen Indizes eine Fehlermeldung - Finden tut er den Artikel aber auch nicht mehr...
Jetzt dachte ich mir, dann verschiebe ich doch die Daten von der Master Tabelle doch in eine andere Tabelle und lösche dann in der Master Tabelle den Artikel.
In der neuen Tabelle lege ich keinen unikalen Index mehr an und so sind alle zufrieden....
Leider nicht, da ich die Daten leider nicht so ohne weiteres verschieben kann, da die Mastertabelle ja auch an die Child Tabelle gebunden ist per Fremdschlüssel.
Einzige Idee, die ich jetzt hatte, wäre, auch die Child Tabelle noch mal anlegen für die gelöschten Daten. - Das empfinde ich aber als starke Redundanz.
Gibt es eine Möglichkeit? - Oder bin ich mit der Redundanz zu zimperlich?
DANKE schon im Voraus
Alle Antworten
-
Donnerstag, 30. August 2012 16:30Moderator
Unikal?? Statistische Gründe?
Wenn ein Artikel gelöscht wurde, dann kann er auch rein fachlich nicht mehr neu angelegt werden. Ein neuer Artikel kann nicht den gleichen Fachschlüssel haben. Sollte das wider Erwartens trotzdem so sein, den ist der neue Artikel mit dem alten identisch. Dann reicht es das Gelöscht-Kennzeichen zu entfernen.
-
Donnerstag, 30. August 2012 16:46
Hallo
Vorweg gleich mal, DANKE
Unikal = Unique = Einmalig
Statistisch = Ja, ist etwas komplizierter, da im Hintergrund auch noch die verkauften Mengen/Preise mitgeschrieben werden und das dann als Umsatz nicht fehlen darf, nur weil es den Artikel nicht mehr gibt.
Aber: Nein, das einfach an und aus Schalten funktioniert nicht. - Es kann eben schon sein, dass ein Artikel gelöscht und wieder neu angelegt wird.
Der Grund ist relativ einfach: Es gibt keinen Hersteller<->Kunden Datensatz, der von der Industrie zur Verfügung gestellt wird. - Somit ist die Eingabe rein "menschlich" - Somit kann es auch vorkommen, dass eben ein Artikelcode erst gelöscht wird (da der Hersteller es nicht mehr liefert) und dann kommt ein ähnliches Produkt und der, der es anlegt, nimmt wieder (zufällig) den gleichen Artikelcode wie vorher.
Das ist der Grund.
DANKE
-
Donnerstag, 30. August 2012 17:02
Hallo,
ich sehe da ein paar Probleme:
1. Du verwendest einen Natural Key, eben die Artikelnummer; kann man machen, aber das führt mitunter genau zu den Problemen, die Du nun hast. Man sollte besser ein Technical Key wie eine einfache fortlaufende Nummer (Identity).
2. Die Applikation erlaubt scheinbar, das gleiche Artikelnummern angelegt werden können, obwohl sie eigentlich einfach prüfen kann, ob es sich schon gibt, unabhängig davon, ob das "Gelöscht" Kennzeichen gesetzt ist oder nicht.
- Als Antwort markiert Zero-G. _ Freitag, 31. August 2012 07:42
-
Donnerstag, 30. August 2012 21:32
Hallo,
Du must nichts anderes tun als bei den Auswertungen das loeschkz zu ignorieren.
Optional: den gelöschten Artikel darstellen als gelöscht nicht editierbar.Eine einmal vergebene Artikelnummer kann nicht erneut eingegeben werden. Die ist weg.
Deine Umsätze können nicht passen wenn eine Artikelnr nicht eindeutig ist. Option-> Artikelnr + weiteres Feld , aber das sollte man vermeiden.
"Einfach" eine Meldung, diese Artikelnr ist bereits belegt, daran hängen Umsätze bitte eine andere Artikelnr eingeben. Denn so scheint es zu sein, die Artikelnr entsteht nach dem Stand der Sonne.Grüße Alexander
-
Freitag, 31. August 2012 07:41
Danke für eure Antworten.
Es scheint also wirklich nichts daran vorbei zu führen, als den Artikel definitiv als nicht mehr Nutzbar markieren zu müssen.
Schönes WOE

