Daten Bank Aufbau ?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Daten Bank Aufbau ?

Beitrag von pluto »

Hallo,
ich möchte mir ein kleines Tool schreiben welche meine persönlichen Daten verwalten.
Ich habe auch schon eine Version fast Fertig. Sie bassiert auf die Speicher und Lade Funktionen der VST Komponente.

Das Programm hat noch eine kleinen Fehler. Aber wenn die DB wechst wird es leider auch längern dauern beim Speichern und Laden.

Deshalb habe ich mir überlegt eine Richtige DB zu verwenden. Lazarus bietet dazu ja verschiedene System an.
Da ich kein DB-Server verwenden möchte. Möchte ich gerne die SQL-Lite DB verwenden.

ich habe es auch schon geschafft eine Datenbank Datei anzulegen draus zu lesen und wieder zu speichern. Auch als Baum. Den ich in einer VST-Komponente anzeigen wollte/möchte.
Das klappt auch schon so weit.

Nur mir kam noch einige Ideen und ich weiß nicht so recht wie ich sie einbauen sollte, da ich noch nicht oft mit fertigen Datenbank-System zu tuen hatte.

Also bei der VST-Variante also ohne eine Datenbank hatte ich einfach ein record Definiert:

Code: Alles auswählen

TNotizint = record
// Der Anzeige Text für die VSt
    Caption:String;
// Der Text der angezeigt werden soll
    Text:TStrings;
// NOch nicht verwendet
    id:String;
// Wird gebraucht um zu entscheiden ob ein Plus zeichen vor dem Eintrag
// In der VSt gemacht werden soll
    submenu:String;
// Verwendeter Higleiter für SynEdit
    HigLeiter:String;
//  Erstellungs Datum
    CreateDate:TDate;
    CreateTime:TTime;
// Zuletzt gelesen
    LastReadDate:TDate;
    LastReadTime:TTime;
// Zuletzt geändert
    LastChangeDate:TDate;
    LastChangeTime:TTime;
// Abgerufen
    ReadCount:Integer;
// anzahl der Änderungen
    ChangeCount:Integer;
// Das Password für den Eintrag
    Password:String;
    TextPassWord:String;
    TextLinkListPassWord:String;
// Bestimmt ob der Text entschlüsselt ist oder nicht
    isEnt:Boolean;
// Wenn Linkgs mitangeben werden sollen
    LinkList:TStringList;
// Welche Nootbookeseite wahr zuletzt aktiv ?
   lastNoteBookIndex:Integer;
// Bestimmt ob dieser Eintrag verändert wurden ist oder nicht
   isMod:Boolean;
// Speichert die Gesetzten Sprunmarken in der SynMemo
   Bookmars:String;
  end;


ich denke die einzelne Felder dürften klar sein. oder ?
Bei der "neuen" Version möchte ich jetzt ein SQL-Lite Verwenden.
Im Moment habe ich folgenden Aufbau.
VstName_Root
id1=text1
id2=text1
id3=text1
id4=text1


um jetzt einen unter Knoten zu speichern bzw. zu laden. wird geschaut gibt es ein Datensatzt zu id1 die id sind bei mir 10 Stellige Zahlen die zufällig gebildet werden.

Gibt es einen Datensatzt oder eine Tabelle zum Eintrag wird ein + Zeichen gesetzt und beim drauf klicken wird dieser Tabelle geladen.

Dieser Aufbau schien mir richtig für ein Baum zu sein.

Das Problem ist jetzt, wie mache ich weiter ?
mein ziel ist, das ich folgende Datenspeichern kann:
1).Normale Soruce sie sollen in einem TSynEdit da gestellt werden.
2) Einträge sollen verschlüsselt werden können mit RC4
3) Ich möchte Link, Datei listen und sonstige Listen abspeichern können zu einem Eintrag
4) Der User soll seine Eigenen Tabellen definieren können und die Felder bestimmen.

die Frage ist jetzt, wie könnte ich es am besten die Daten da stellen und das Programm aufbauen ?

Ich dachte an folgenden Aufbau:
Links eine VST
rechts eine TPageControl für die einzelne Fehlder.

zu jeden Eintrag sollen noch 10 Standart Informationen gespeichert werden.
01) Create Date
02) Crate Time
03) Last Change Date
04) Last Change Time
05) last Read Date
06) Last Read Time
07) ReadCount
08) ChangeCount
09) Anzeige Text im Baum
10) ID

die Einträge 1-8 soll nur das Programm ändern nicht der user
und der Eintrag 10 ist wie schon gesagt eine zufällig stellige ID.
09 Soll vom User bestimmt werden.

Später sollen noch folgende Felder Folgen:
11) Schrift Farbe
12) Schrift Name
13) Schrift Größe
14) Schrift Style
15) Hintergrund Farbe

Damit sollen Einträge Markiert werden können.

[B ]etzt möchte ich das der User Entscheidet was er zu den Eintrag speichern möchte:[/B]
A) Eine Text Datei. die z.b. mit SynEdit da gestellt werden könnte
B) Eine oder mehre Bin Datei
C) Eine oder mehre Dateiliste
D) Eine oder mehre Linkliste


Meine Frage ist jetzt wie könnte ich am besten die Oberfläche gestalten und die Daten anzeigen ?
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich habe mal ein aufbau beispiel von meine Idee Erstellt:
>RootTabelle
Root1=Eintrag1, CreateDate, CreateTime, ReadCount, ChangeCount, LastPageIndex
Root2=Eintrag2, CreateDate, CreateTime, ReadCount, ChangeCount, LastPageIndex
Root3=Eintrag3, CreateDate, CreateTime, ReadCount, ChangeCount, LastPageIndex
Root4=Eintrag4, CreateDate, CreateTime, ReadCount, ChangeCount, LastPageIndex

Hier sollen jetzt alle Automaitschen Daten gespeichert werden.
Also Daten die vom System verwendet wird.
Root1 ist eine 10 Stellige Zahlen ID, die zufällig gewählt wird.

>Root1_Bases_Daten
01=LastReadDate=Date, LastReadTime=Time, LastChangeDate=Date, LastChangeTime=Time
02=LastReadDate=Date, LastReadTime=Time, LastChangeDate=Date, LastChangeTime=Time
03=LastReadDate=Date, LastReadTime=Time, LastChangeDate=Date, LastChangeTime=Time

>Root2_Bases_Daten
01=LastReadDate=Date, LastReadTime=Time, LastChangeDate=Date, LastChangeTime=Time
02=LastReadDate=Date, LastReadTime=Time, LastChangeDate=Date, LastChangeTime=Time
03=LastReadDate=Date, LastReadTime=Time, LastChangeDate=Date, LastChangeTime=Time

>Root3_Bases_Daten
01=LastReadDate=Date, LastReadTime=Time, LastChangeDate=Date, LastChangeTime=Time
02=LastReadDate=Date, LastReadTime=Time, LastChangeDate=Date, LastChangeTime=Time
03=LastReadDate=Date, LastReadTime=Time, LastChangeDate=Date, LastChangeTime=Time

>Root4_Bases_Daten
01=LastReadDate=Date, LastReadTime=Time, LastChangeDate=Date, LastChangeTime=Time
02=LastReadDate=Date, LastReadTime=Time, LastChangeDate=Date, LastChangeTime=Time
03=LastReadDate=Date, LastReadTime=Time, LastChangeDate=Date, LastChangeTime=Time

Jetzt gibt es ja noch user Defnierte Daten zu den einzelnen Daten:

>Root1_UserDefniert
Typ: vom system verwendet um die Da stellungs Form zu bestimmen
TextFehld=z.b. um einen Text in einer TSynMemo Komponenten anzuzeigen.*
Linkliste=Um Linkst zu verwalten
Password=Wird vom User geben und soll so verschlüsselt werden, das es keine möglichkeit mehr gibt, es zu entschlüsseln.
Wird ein Password verwendet werden alle Fehlder Verschlüsselt.

>Root2_UserDefniert
Typ: vom system verwendet um die Da stellungs Form zu bestimmen*
Vorname, Nachname, Straße, Haußnummer, PLZ, Ort, Tele. Handy, E-Mail(s), Webseite, Geburastag

*Z.b. könnte diese Tabelle in einer TStringGrid da gestellt werden, oder aber die Daten von Root1 könnten
auch in einem SynMemo da gestellt werden.

>Root2_Tabelle
SubItem1=Eintrag1, CreateDate, CreateTime, ReadCount, ChangeCount, LastPageIndex
SubItem2=Eintrag2, CreateDate, CreateTime, ReadCount, ChangeCount, LastPageIndex
SubItem3=Eintrag3, CreateDate, CreateTime, ReadCount, ChangeCount, LastPageIndex
SubItem4=Eintrag4, CreateDate, CreateTime, ReadCount, ChangeCount, LastPageIndex


was haltet ihr davon ?
MFG
Michael Springwald

Antworten