Autor |
Beitrag |
Magic2001
      
Beiträge: 32
Delphi XE2
|
Verfasst: 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
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: 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
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Di 16.04.13 06:28
Magic2001 hat folgendes geschrieben : | 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
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: 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
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Di 16.04.13 10:29
zuma hat folgendes geschrieben : | 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
|
Verfasst: Di 16.04.13 14:15
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Di 16.04.13 14:17
Perlsau hat folgendes geschrieben : | 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
|
Verfasst: Di 16.04.13 14:18
|
|
Xion
      

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)
|
Verfasst: 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.
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 
_________________ 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
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mi 17.04.13 14:21
Er hat "BDE" gesagt, steinigt ihn 
Für diesen Beitrag haben gedankt: FinnO, Martok
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: 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.
|
|