Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbankdesign - Versionierung von Dokumenten (Datensätzen) (https://www.delphipraxis.net/140013-datenbankdesign-versionierung-von-dokumenten-datensaetzen.html)

Grolle 10. Sep 2009 08:39

Datenbank: noch keine • Version: noch keine • Zugriff über: noch gar nicht

Datenbankdesign - Versionierung von Dokumenten (Datensätzen)
 
Hallo,

ich sitze gerade am Design für eine neue Datenbank. In dieser werden Dokumente verwaltet, welche eine Versionsnummer brauchen. Alte Versionen sollen ggf. wieder aktiv werden. Die Frage ist, ob ich die Version einfach mit in dem Dokumentendatensatz reinschreibe und für eine neue Version den Datensatz neu anlege, oder ob ich das auslagere (wie auch immer)?

Viele Grüße ....

mkinzler 10. Sep 2009 09:30

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
Ich würde einfach ein weiteres Feld für die Version anlegen.

hoika 10. Sep 2009 09:36

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
dito

alles andere ist unnötiger Aufwand.


Heiko

schlecki 10. Sep 2009 09:41

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
also, ich hatte mal das Vergnügen mit einer solchen versionierenden Tabelle... da gab es dann tausend Flags, mit denen man abfragen konnte, ob es:

* die erste Version ist (= Vers. 1)
* die letzte Version ist
* und noch andere, die ich mittlerweile verdrängt hab :D

Das Feld für die letzte Version war dann auch immer mit upzudaten - damals wurden noch keine Trigger eingesetzt, obwohl es auf Interbase und Oracle gelaufen ist. Alles in allem tendiere ich auch zu dieser Lösung, aber man sollte sich vorher wirklich ausgiebigst Gedanken machen.

Grolle 10. Sep 2009 09:45

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
Hi,

im Moment sehe ich das auch als beste Lösung (1 zus. Feld), aber wer weiß, wie sich die Anforderungen noch verändern.

Danke für eure Einschätzung ...

// OHHHH 1000.er Beitrag - bekomme ich nen lila Stern? :stupid:

hoika 10. Sep 2009 09:46

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
Hallo,

naja

SQL-Code:
create table doc
(id integer not null, version integer not null, doc blob)

1. Version
SQL-Code:
where version = 1
letzte Version
SQL-Code:
select first 1 * from doc
order by version desc

Version 1.0 des Programms ist fast fertig ;)


Heiko

Grolle 10. Sep 2009 09:53

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
Zitat:

Zitat von hoika
Version 1.0 des Programms ist fast fertig ;)

Die restlichen 30 Tabellenscripte sind unterwegs zu dir. Hoffe du schaffst Version 1.0 RC vor 11.00 Uhr :mrgreen:

mkinzler 10. Sep 2009 10:07

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
@hoika dann würdest du einen zusammengesetzten Primärschlüssel benötigen, besser wäre es einen künstlichen Schlüssel zu verwenden.

SQL-Code:
create table doc
(id integer not null, Dokid integer not null, version integer not null, doc blob)

schlecki 10. Sep 2009 10:15

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
Zitat:

Zitat von hoika
Hallo,

naja

letzte Version
SQL-Code:
select first 1 * from doc
order by version desc

Version 1.0 des Programms ist fast fertig ;)


und wie sieht jetzt zum Beispiel das SQL aus, das alle Dokumenten in der letzten Version in einem best. Verzeichnis liefert?

mkinzler 10. Sep 2009 10:17

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
SQL-Code:
select
    first 1 * 
from
    dokumente
where
    dokid = :dokid
order by
    version desc;

schlecki 10. Sep 2009 10:18

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
Zitat:

Zitat von hoika
1. Version
SQL-Code:
where version = 1

Wo ich das sehe, fällt mir auch wieder ein, warum wir das Flag für die erste Version hatten... es konnte vorkommen, dass der Administrator Datensätze gelöscht hat, dann wurden automatisch der nächste DS die "1. Version" wurde.

schlecki 10. Sep 2009 10:20

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
Zitat:

Zitat von mkinzler
SQL-Code:
select
    first 1 * 
from
    dokumente
where
    dokid = :dokid
order by
    version desc;

was aber auch wieder nur 1 Datensatz liefert... ich will aber alle (für ein best. Verzeichnis beispielsweise)

mkinzler 10. Sep 2009 10:28

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
Wie meinst du das mit Verzeichnis?

schlecki 10. Sep 2009 10:43

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
nicht nur einen Datensatz, sondern mehrere...

SQL-Code:
create table (
  id integer primary key,
  verzeichnis varchar(255) not null,
  version int not null,
  doc blob
);
wie bekomme ich jetzt alle docs in der letzten version für ein gegebenes Verzeichnis? Möglichst in einem Resultset für den Bericht oder sonstiges

mkinzler 10. Sep 2009 11:05

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
Da müsstest du Gruppieren oder eine/einen SP/Execution Block verwenden

grumbeernils 10. Sep 2009 11:05

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
das kann sein

DeddyH 10. Sep 2009 11:21

Re: Datenbankdesign - Versionierung von Dokumenten (Datensät
 
Falschen Thread erwischt? Ich vermute, die Antwort sollte hierhin.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz