Autor Beitrag
Magic2001
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32


Delphi XE2
BeitragVerfasst: Mo 15.04.13 19:23 
Ich möchte eine neue Datenbank anlegen. Nun benötige ich ein Memofeld das eigentlich eine unbekannte Größe hat. Also ich weiß es nicht. Es können wenige Zeilen sein oder auch sehr viel text. Also sagen wir mal bis zu etwa 1Mb oder so.
Welchen Datentyp muss ich dafür angeben?

Welche länge gebe ich bei Boolean an?
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Mo 15.04.13 20:01 
Welches DBMS? Es gibt welche, die kennen gar kein Boolean, das muss man dort selbst deklarieren. Für die Texte würde ich BLOB nehmen, aber auch da gibt es Unterschiede zwischen den einzelnen Systemen.
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Di 16.04.13 06:28 
user profile iconMagic2001 hat folgendes geschrieben Zum zitierten Posting springen:
Nun benötige ich ein Memofeld das eigentlich eine unbekannte Größe hat. Also ich weiß es nicht. Es können wenige Zeilen sein oder auch sehr viel text. Also sagen wir mal bis zu etwa 1Mb oder so.

Ich würde den Inhalt der Memos in einzelnen Dateien speichern und in der Datenbank nur die Informationen (Dateiname, Speicherort, ggf. Größe, Stichworte usw.) festhalten.
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Di 16.04.13 09:04 
Die Memo's in einzelne Dateien speichern halte ich für sehr schlecht.
Erst recht, wenn man eh ne Datenbank benutzt. Neben der ganzen selbst zu machenden Verwaltungsarbeit der Dateien hat man sozusagen verschiedene Speicherorte und
Zugriffslogiken. Dateien auf der Festplatte geniessen keinen "Schutz" vor dem Zugriff löschwütiger User, und ... und .. und ...

Zuerst sollte man sich Gedanken machen, welche Datenbank man nehmen möchte. (Ich würde Firebird empfehlen.)
Dort wären sogenannte Blobfelder für Memo's geeignet.
Boolean's haben dort keine "Länge", es gibt auch dort den Datentyp boolean.
Insgesamt scheint es mir, das noch keine Erfahrungen mit einer Datenbank vorhanden sind,
daher empfehle ich ersteinmal, sich mit dieser Materie zu beschäftigen.
"Mal eben" eine Datenbank zu benutzen geht in den meisten Fällen schief, wenn dort keine oder kaum Kenntnisse eines Datenbank-systems vorhanden sind.

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Di 16.04.13 10:29 
user profile iconzuma hat folgendes geschrieben Zum zitierten Posting springen:
Die Memo's in einzelne Dateien speichern halte ich für sehr schlecht. Erst recht, wenn man eh ne Datenbank benutzt.

So pauschal kann man das aber nicht sagen. Es gibt Argumente, die dafür sprechen, und es gibt Argumente dagegen. Die kann man bei Google alle nachlesen. Deshalb erspare ich mir hier die Auflistung.
Zitat:
Insgesamt scheint es mir, das noch keine Erfahrungen mit einer Datenbank vorhanden sind, daher empfehle ich ersteinmal, sich mit dieser Materie zu beschäftigen.

Da gebe ich Dir vollkommen Recht. Die Zeit, die man im Vorfeld für das Datenbankdesign aufwendet, holt man bei der anschließenden Programmierung mindestens doppelt und dreifach wieder rein.
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 16.04.13 14:15 
user profile iconzuma hat folgendes geschrieben Zum zitierten Posting springen:
Zuerst sollte man sich Gedanken machen, welche Datenbank man nehmen möchte. (Ich würde Firebird empfehlen.)
Dort wären sogenannte Blobfelder für Memo's geeignet.

Man kann in Firebird sogar auswählen, ob man binäre oder textbasierte Blobfelder verwendet. Für ein Memo ist natürlich die textbasierte Version richtig.

user profile iconzuma hat folgendes geschrieben Zum zitierten Posting springen:
Boolean's haben dort keine "Länge", es gibt auch dort den Datentyp boolean.

Das ist nicht richtig. Firebird verfügt nicht über einen Boolean-Typ. Den muß man sich für jede DB, die man unter Firebird anlegt, selbst deklarieren. Und natürlich hat der solcherart deklarierte Boolean-Typ auch eine Länge, nämlich die von ShortInt oder Integer. Für den Zugriff via FibPlus-Komponenten genügte ein ShortInt als Grundlage des Boolean-Typs. Meine neuen IBDac von Devart erwarten hier aber ein Integer. DDL:
ausblenden Quelltext
1:
2:
3:
4:
CREATE DOMAIN INTBOOLEAN AS
INTEGER
NOT NULL
CHECK (VALUE IN (0,1));
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Di 16.04.13 14:17 
user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
Das ist nicht richtig. Firebird verfügt nicht über einen Boolean-Typ.

Die Version 3 von Firebird wird einen Boolean-Datentyp haben.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 16.04.13 14:18 
user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
Das ist nicht richtig. Firebird verfügt nicht über einen Boolean-Typ.

Die Version 3 von Firebird wird einen Boolean-Datentyp haben.

Aber die gibt's noch nicht.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mi 17.04.13 14:16 
Nach dem anderen Thread zu schließen, ist das DBMS noch garnicht klar.

Bzgl. Boolean kann man immer einen Trick anwenden (z.B. einen Integer benutzen).

Bei Texten kommt es ganz drauf an. Ich nehme an, du willst darin auch suchen, und das wohl nicht nur Case-Sensitive. SQLite ist da z.B. recht komfortabel, denn es bietet TEXT-Datentypen an, in denen man sogar Größenunabhängig suchen kann.
ausblenden SQL-Anweisung
1:
2:
CREATE TABLE test (
memoInhalt TEXT COLLATE NOCASE )

Ich weiß nicht, inwiefern andere Datenbanken sowas unterstüten. Die BDE konnte das auf alle Fälle nicht :mrgreen:

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Mi 17.04.13 14:21 
Er hat "BDE" gesagt, steinigt ihn :mrgreen:

Für diesen Beitrag haben gedankt: FinnO, Martok
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Do 18.04.13 05:03 
WasWeißIchDenn: Womit willst Du ihn den steinigen, mit Boolschen Bits? Pass auf, dass Du dann nur die Trues erwischst, denn die Falses kommen prompt zurück. Allerdings, die sind so leicht, da spürt man eh nix.

Oder mit Integers. Man, die sind doch viel zu schwer, die kriegste kaum gehoben. Außerdem ist deren Flugkurve so verdammt abgehackt 0 - 1 - 2 - 2 - 3 - 3 - 4 - 3 - 4 - .... BUMMM!

Oder gar die Extended-Variante. Lass die Finger von denen, die flutschen Dir wegen der Ungenauigkeiten aus den Fingern und landen sonstwo.

Wäre da noch string. Bloß nicht, da wirfst Du und wirfst Du und kein Ende in Sicht. Schließlich ist Dein Arm vor lauter Werfen ganz lahm und das Opfer merkt wegen der Leichtigkeit der Einzelbytes gar nix. Das ist, als ob Du mit einem ganz locker gepapptem Schneeball jemanden erschlagen willst.

Wie wäre es mit Variant oder Pointer: Ganz tückisch, die Dinger. sehen so klein aus, aber da steckt Masse hinter - möglicherweise, möglicherweise aber auch nur laue Luft.

Und last-not-least: Records und Objekte. Ojoj, ne bloß nicht diese. Da gibt es teilweise üble Ankerfunktionen udn -Prozeduren, und dann kreisen die Dinger plötzlich um dich.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.