Hallo,
ich arbeite gerade an einer Artikeldatenbank mit Delphi 5 und Interbase 6. Ich habe hier ein Problem mit dem richtigen Datentyp für die Schlüsselfelder. In den meisten Büchern über Datenbankprogrammierung wird für den Primary-Key ein Integer-Feld empfohlen. Nun will ich die Anwender aber nicht in der Wahl ihrer Artikelnummern beschränken. Zudem soll auch die EAN genutzt werden können. Die EAN kann jedoch entweder 8 oder 13 Stellen haben, eine Erweiterung auf 14 Stellen ist geplant. Ausserdem kann die EAN mit '0' bzw. '00' anfangen. Hiermit fällt ein Integer schon aus der Planung, da es die führenden Nullen abschneiden würde.
Ich denke hier hilft mir nur ein Textfeld weiter, auch wenn es nur mit Zahlen belegt wird. Hierbei habe ich dann aber das Problem, das Texte anders sortiert werden. Es wäre z. B. die Nummer '1234567890123' vor der Nummer '99999999'. Ein Ansatz richtig zu sortieren ist, die Zahlen bei Eintrag in die Datenbank mit führenden Leerzeichen auf eine einheitliche Länge (Feldlänge) zu bringen. Somit wird zwar richtig sortiert, jedoch die Suche nach einer Nummer wird erschwert, sobald nicht alle Nummern die gleiche Länge aufweisen.
Es ist zwar kein Problem, einen Artikel mit bekannter Nummer aufzurufen - einfach wieder die notwendige Anzahl Leerzeichen voranstellen - aber wie Suche ich nach Artikeln die mit '123' anfangen. Wie viele Leerzeichen stelle ich voran.
Wer hat so ein Problem schon einmal wie gelöst? Sollte ich Zwei Felder anlegen, eines zum Sortieren mit führenden Leerzeichen, das Andere für die Suche linksbündig? Gibt es vielleicht andere Datenbanken, die soetwas über Index lösen?
Bitte helft mir.
Gruß, Frank
ich arbeite gerade an einer Artikeldatenbank mit Delphi 5 und Interbase 6. Ich habe hier ein Problem mit dem richtigen Datentyp für die Schlüsselfelder. In den meisten Büchern über Datenbankprogrammierung wird für den Primary-Key ein Integer-Feld empfohlen. Nun will ich die Anwender aber nicht in der Wahl ihrer Artikelnummern beschränken. Zudem soll auch die EAN genutzt werden können. Die EAN kann jedoch entweder 8 oder 13 Stellen haben, eine Erweiterung auf 14 Stellen ist geplant. Ausserdem kann die EAN mit '0' bzw. '00' anfangen. Hiermit fällt ein Integer schon aus der Planung, da es die führenden Nullen abschneiden würde.
Ich denke hier hilft mir nur ein Textfeld weiter, auch wenn es nur mit Zahlen belegt wird. Hierbei habe ich dann aber das Problem, das Texte anders sortiert werden. Es wäre z. B. die Nummer '1234567890123' vor der Nummer '99999999'. Ein Ansatz richtig zu sortieren ist, die Zahlen bei Eintrag in die Datenbank mit führenden Leerzeichen auf eine einheitliche Länge (Feldlänge) zu bringen. Somit wird zwar richtig sortiert, jedoch die Suche nach einer Nummer wird erschwert, sobald nicht alle Nummern die gleiche Länge aufweisen.
Es ist zwar kein Problem, einen Artikel mit bekannter Nummer aufzurufen - einfach wieder die notwendige Anzahl Leerzeichen voranstellen - aber wie Suche ich nach Artikeln die mit '123' anfangen. Wie viele Leerzeichen stelle ich voran.
Wer hat so ein Problem schon einmal wie gelöst? Sollte ich Zwei Felder anlegen, eines zum Sortieren mit führenden Leerzeichen, das Andere für die Suche linksbündig? Gibt es vielleicht andere Datenbanken, die soetwas über Index lösen?
Bitte helft mir.
Gruß, Frank
Comment