Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Autowert

Begonnen von fred-neumann, September 16, 2016, 11:32:53

⏪ vorheriges - nächstes ⏩

fred-neumann

Moin Gurus,
Beim öffnen meiner Datenbank wird eine Löschen-Abfrage durchgeführt und anschließend eine Anfügen-Abfrage. Es geht da immer um ca. 1500 DS und jeder DS erhält auch einen automatischen Wert. Nun öffne ich die DB am Tag des öfteren und der automatische Wert wird im laufe der Zeit wohl beeindruckende Größe erhalten.
Meine Frage:
Brauche ich mir (in Hinsicht auch einen Höchstwert) da keine Gedanken machen?
Gibt es die Möglichkeit, dass beim ausführen der Anfügen-Abfrage der automatische Wert bei 1 beginnt?

angefügt:
durchflog etwas die Forenbeiträge zu diesem Thema,- Höchstwert zumindest geklärt: Long Integer hat einen Wertebereich von -2,14 Mrd. bis +2,14 Mrd.

Hat jemand auf meine zweite Anfrage einen Ansatz?

el_gomero

Hallo,

beim komprimieren wird der Autowert auf den niedrigst möglichen Wert zurück gesetzt. Wenn die Tabelle leer ist also auf 0.

Den Maximalwert für das Autowertfeld hast du ja bereits selbst heraus gefunden ;)
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

Lachtaube

Bei ca. 1500 Datensätzen je Aktion würde nach ca. 1,5 Mio Aktionen der Autowert negative Werte annehmen und stünde für die gleiche Anzahl an Aktionen noch einmal zur Verfügung. Bei ca. 100 dieser Aktionen je Tag könnte man damit ca. 78 Jahre füllen. In der Praxis wird man allerdings etwas früher ein Komprimieren des Backends einleiten müssen, weil die 2GB-Grenze der max. Dateigröße angekratzt wird.
Grüße von der (⌒▽⌒)

fred-neumann

Jo el_gomero
hatte ich ebenfalls in betracht gezogen, dies in abständen zu unternehmen
Danke!

Lachtaube,
Laut Sterbetafel 12/14 haben Neugeborene (m) in Deutschland eine durchschnittliche Lebenserwartung von 78,13 Jahre. Gut zu wissen, das mein Sohn die Datenbank weiter führen kann :-)

ebs17

Alles Löschen und neu Einfügen entspricht weniger dem Wesen einer Datenbank. Eine solche versammelt eigentlich Daten und behält sie.
Mit freundlichem Glück Auf!

Eberhard

fred-neumann

#5
Oh Ebs,
jetzt wo du es schreibst ... hatte ich auch irgendwo mal gelesen ...
Mein Aufbau in einer neuen DB beginnt mit einer Verknüpfung zum Excel-Tabellenblatt.
Aus diesem Blatt kommen 1500 bis 2300 DS.
Um den Datensätzen in Access einen eindeutigen Wert zu verschaffen, dachte ich, meine verknüpfte Tabelle nochmals als Tabelle abzuspeichern. Dann bei öffnen der DB sollte der Inhalt aus der neuen Tabelle gelöscht werden und die Datensätze aus der verknüpften Tabelle eingefügt werden.
Ist das alles Panne? Hättest du einen besseren Vorschlag Eberhard?

.. PS: ich habe auch das Gefühl, wenn ich komplexere Abfragen von einer Abfrage mache, dauert das Ergebnis länger als wie wenn ich dies von einer Tabelle gemacht habe. Einbildung?

ebs17

Ein Identifier hat durchaus oft seine Berechtigung, Selbstzweck wäre aber keine solche Berechtigung. Wird denn die ID funktionell genutzt? Wie?

Zitatich habe auch das Gefühl, wenn ich komplexere Abfragen von einer Abfrage mache, dauert das Ergebnis länger als wie wenn ich dies von einer Tabelle gemacht habe. Einbildung?
Nein. Eine Abfrage ist keine Tabelle, sondern eine Definition, wie Daten aus Tabellen abzufragen sind. Sie enthält keine Daten im realistischen Sinn. Der Begriff QueryDef hat eine ursprüngliche Bedeutung.
Folglich werden bei Ausführung einer Abfrage auch die enthaltenen internen Abfragen erneut ausgeführt. Je nach Abfragedesign, Indexnutzung und verwendeten Datenmengen, gepaart mit eigenem Geschick/Ungeschick kann sich da ein Berg an Arbeit aufhäufen, der dann auch zeitlich bewältigt werden will.

Das Speichern von Zwischenergebnissen in Tabellen ist aber auch kein Königsweg und primär sehr kritisch zu betrachten. Gespeicherte Zwischenergebnisse werden nicht automatisch geändert, wenn man in den Ursprungsdaten Neueintragungen, Editierungen oder Löschungen vornimmt. Datenanomalien sind die Folge und im Nachgang schwer zu erkennen.
Daher gilt das Prinzip, eine Information nur an genau einer Stelle zu speichern und alles Abhängige davon jeweils neu zu berechnen. Daher würde man zuerst komplexe Abfragen durch optimale komplexe Abfragen ersetzen, was recht oft Performanceprobleme löst. Wenn nicht, dann muss das Zwischenspeichernproblem sehr sauber und durchdacht gelöst sein. Ein Weg wäre da das Ablegen in einem lokalen temporären Backend, welches spätestens nach Beenden der Anwendung als Ganzes terminisiert wird, womit dann den Geboten des Nichtspeicherns von Redundanzen und des Nichtspeicherns von Berechnungsergebnissen dann auch Genüge getan wird.
Mit freundlichem Glück Auf!

Eberhard

fred-neumann

Hallo Eberhard,
ich habe hier im Forum des öfteren schon nach sql - Lösungen gefragt und jedesmal kam die Gegenfrage; "Haste denn auch einen Identifier ...". Das Datumsfeld konnte zwar gelegentlich "einspringen" doch mit einer ID scheint etwas mehr möglich zu sein ..
Ich beginne gerade eine neue DB und möchte die von Beginn an so optimal wie mir möglich ist, aufbauen. Ich habe dazu jetzt schon ein dutzend Fragen, wie ich "Abarbeitungen" optimal hin bekomme ......
Eberhard, Danke für deine ausführliche Antwort

ebs17

ZitatHaste denn auch einen Identifier ...
Das gilt dann eher für Datensätze in Stammdatentabellen, wo man sie über eine Identifikation hinaus auch für Verknüpfungen / Beziehungen mit weiteren Tabellen dauerhaft benötigt.

In Stammdatentabellen wird dann meist eine ID über einen Autowert automatisch erzeugt, durch richtiges Einfügen in richtigen Tabellen kann man dann auch ein Hin und Her vermeiden, ein Komplettlöschen und neues Einfügen wird nicht stattfinden und durch vorhandene Beziehungen mit referentieller Integrität meist gar nicht möglich sein.

Eine verknüpfte Tabelle (als Datenlieferant?) spielt da eine andere Rolle.

Ach so: Desweilen kann man komplexe Abfragen auch durch einfache ersetzen. Es gibt durchaus öfters verschiedene Wege, um an ein Ziel zu kommen.
Mit freundlichem Glück Auf!

Eberhard