phpbar.de logo

Mailinglisten-Archive

[php] inserting between 2 rows

[php] inserting between 2 rows

Kristian =?iso-8859-1?Q?K=F6hntopp?= kk_(at)_netuse.de
Mon, 06 Dec 1999 15:49:23 +0100


Holger Bahr wrote:
> Es geht, grob formuliert - um "(Primaray Key) ID - Shifting".

Nö.

Sprich mir nach: "Ein Primary Key definiert keine Reihenfolge. Ein
Primary Key definiert eine Äquivalenzrelation, die einzigen Operationen,
die man auf Primary Keys anwenden kann sind "gleich" und "ungleich"".

Du bist gerade dabei, einen Primärschlüssel als Ordnungsrelation
zu verwenden. Um die gewünschte Ordnung zu definieren, fängst
Du an, Objektidentitäten zu ändern. Wenn jetzt Dein PK noch in
anderen Tabellen als FK (Foreign Key, Fremdschlüssel auftaucht),
ist das Desaster vorprogrammiert.

Der modelltechnisch saubere Vorschlag ist, Objektidentität
(PK) und Tabellenordnung sauber zu trennen, indem Du eine
gesonderte Spalte "Sortierreihenfolge" angelegst. Die kannst
Du zum Beispiel "Erscheinungsdatum" (ein durch den User definierbarer
Wert) oder sonstwie passend benennen.

> Ach ja, das Programm soll sich natürlich automatisch die richtige Reihenfolge
> 'merken'. Es ist nicht erwünscht, bei jedem Eintrag generell eine Position
> angeben zu müssen. Falls Einträge dazwischengeschoben werden, ist es klar daß
> man schon angeben muss ob "vor- oder hinter Eintrag X" eingefügt wird.
> Wenn man keinen "einschiebt" sondern just einen Datensatz hinzufügt, wird
> der automatisch gaaanz nach hinten/unten gesetzt.

Das klingt wie eine lineare Liste als Programmierstruktur, die Du
in SQL nachbilden möchtest.

Kristian

-- 
Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00
Using PHP3? See our web development library at
http://phplib.netuse.de/ (We have moved! Update your bookmarks!)


php::bar PHP Wiki   -   Listenarchive