Datenbank für App

Valledalle

Golden Delicious
Registriert
18.07.09
Beiträge
10
Hi :)
bin jetzt bei meinem App an dem Punkt angekommen, an dem ich eine Datenbank integrieren muss. Hab bisher allerdings nur C# auf meinem Windows rechner programmiert. Auf dem Bild seht ihr was alles in die Datenbank soll.
Die roten Hauptgruppen bleiben 3 Stück, die Gruppen und Untergruppen können mehr werden. Am Ende wird es so sein, dass die Gruppen manchmal von einer Hauptgruppe in eine andere Hauptgruppe verschoben werden müssen (Ist es dafür vielleicht besser 3 verschiedene Datenbänke anzulegen?).
Soll ich dafür SQLite benutzen? Oder gibts noch etwas anderes? Kann ich vielleicht mit diesem "Data Model" oder "Mapping Model" unter "Resource" arbeiten?
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
also was du machen könntest wäre dies in eine xml Datei zu verpacken
Code:
<?xml blablabla>
<Hauptgruppe>
 <Gruppe>
  <string></string>
  <string></string>
  <Array>
   <Untergruppe>
    <bool></bool>
    <integer></integer>
    <date></date>
    <string></string>
    <string></string>
   </Untergruppe>
  </Array>
 </Gruppe>
</Hauptgruppe>

<Hauptgruppe>  //2te Hauptgruppe
 <Gruppe>
  <string></string>
  <string></string>
  <Array>
   <Untergruppe>
    <bool></bool>
    <integer></integer>
    <date></date>
    <string></string>
    <string></string>
   </Untergruppe>

   <Untergruppe> //2te Untergruppe
    <bool></bool>
    <integer></integer>
    <date></date>
    <string></string>
    <string></string>
   </Untergruppe>

  </Array>
 </Gruppe>
</Hauptgruppe>

aber leider habe ich mit C# und xml keine Erfahrungen, wichtig wäre auch zu wissen, ob diese Datenbank oft verändert wird oder nur einmal anlegen und fertig? Wenn dich dieser Weg interessiert, kannst du dir auch ansehen wie so RSS Dateien aufgebaut sind, ist auch nur eine xml Datei, wo alle Informationen drinnen stehen, Datensätze hier zu verschieben geht dann auch mit den xml-Befehlen ziemlich einfach, da wird halt einfach ein Datensatz per Arrayzugriff ausgelesen und in eine andere Arrayposition eingefügt
 

Valledalle

Golden Delicious
Registriert
18.07.09
Beiträge
10
Ich meinte oben, dass ich bisher nur C# programmiert habe und Objective C für mich neues Terrain ist. Jetzt momentan benutze ich Objective C für das App. Das war vielleicht unklar ausgedrückt ;)
Die Liste wird wärend der Laufzeit aufgerufen und aber auch bearbeitet. Da kommt aber jede Menge rein, denke mal xml ist dafür leider zu langsam. :(
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
naja ich habe auch nicht an ObjC gedacht, xml ist ja sehr einfach aufgebaut und kann prinzipiell in jeder Programmiersprache verarbeitet werden, wenn du aber viele Datensätze verarbeiten willst, solltest du dann wahrscheinlich doch "richtige" Datenbanken benutzen. Diese setzten dann aber auch einen Server voraus. Und du musst erst überprüfen mit welchen Datenbanken deine Programmiersprache kompatibel ist. Da ich mit ObjC noch nicht mit Datenbanken gearbeitet habe, kann ich dir dazu nicht viel sagen, aber wenn es geht, würde ich schon eien SQL-Datenbank empfehlen
 

Valledalle

Golden Delicious
Registriert
18.07.09
Beiträge
10
Hast du denn schon mit SQL gearbeitet? Kann ich da überhaupt so einen 'Datenbaum' (Ich nenns mal so ;) , also quasi Array in Array) erstellen?
 

Jamsven

London Pepping
Registriert
21.11.07
Beiträge
2.046
An deinen Ideen sehe ich, dass du das Konzept der relationellen Datenbanken nicht kennst.
Das Problem ist, dass solche Fragen nicht mit einem Post hier zufriedenstellend beantwortet sind.
Wenn du dir viel Ärger, Nerven und eine inkonsistente Datenbank sparen willst, empfehle ich dir
entsprechende Lektüren zur Brust zu nehmen.
Beispielsweise:
http://www.amazon.de/Grundlagen-von-Datenbanksystemen-Ausgabe-Grundstudium/dp/3827371538

Dieses Buch ist ganz neutral und verlässt sich nicht auf ein spezifisches Datenbanksystem.

Ich persönlich nutze postgreSQL als System, die Meisten nutzen aber mySQL. Doch wissen wir ja als Machuser, dass Marktmacht != Qualität ist.;)
 

Jamsven

London Pepping
Registriert
21.11.07
Beiträge
2.046
Mit SQL Lite habe ich mich nicht ausgiebig beschäftigt und weiß auch nicht was genau dem System fehlt. Wie dem auch sei, die Konzepte sind gleich und deren Beherrschung werden auch in SQLite von Nöten sein.
Die Systemauswahl ist ja anforderungsabhängig.
 

Valledalle

Golden Delicious
Registriert
18.07.09
Beiträge
10
Hm, dann werd ich mich wohl mal in SQL reinarbeiten. Habe mich ja noch gar nicht mit den Datenbänken auf dem Mac beschäftigt und wollte jetzt erstmal grundsätzlich wissen ob das mit SQL umzusetzen ist. Nicht, dass ich mich da reinlese und es klappt nicht.
Mit den DataSets bei C# konnte ich mir bisher immer alle Wünsche erfüllen ;) und wenn das mit den Relations bei SQL auch möglich ist, dann ist ja wunderbar. Hab das nur bisher nirgendwo gesehen.
 

The-Kenny

Transparent von Croncels
Registriert
22.05.08
Beiträge
307
Wenn wir schon auf dem iPod/Mac sind: Wieso nicht CoreData? Das ist ein schöner Abstraktionslayer für verschiedene Datenbanken der sehr gut in Cocoa integriert ist.

(Das funktioniert dann genau mit den von dir genannten Data Models in Xcode)
 

Jamsven

London Pepping
Registriert
21.11.07
Beiträge
2.046
Wenn wir schon auf dem iPod/Mac sind: Wieso nicht CoreData? Das ist ein schöner Abstraktionslayer für verschiedene Datenbanken der sehr gut in Cocoa integriert ist.

(Das funktioniert dann genau mit den von dir genannten Data Models in Xcode)

Mit Core Data würde das auch laufen nur ich habe den TE so verstanden, dass er je einen Frontend für Win und Mac haben will.
 

doeme89

Pomme Miel
Registriert
27.12.06
Beiträge
1.477
Mit Core Data würde das auch laufen nur ich habe den TE so verstanden, dass er je einen Frontend für Win und Mac haben will.
Er beschreibt zwar dass er von der Windows-Welt her kommt, aber nicht dass die App auch auf Windows laufen soll. ;)
 

Jamsven

London Pepping
Registriert
21.11.07
Beiträge
2.046
Er beschreibt zwar dass er von der Windows-Welt her kommt, aber nicht dass die App auch auf Windows laufen soll. ;)

Wenn er beide Systeme nutzt und er schon ein C# App hat, liegt es nahe die Daten plattformunabhängig zu speichern. ;)

Zwar kann man sicherlich auch von dem SQLite ohne CoreData exportieren, aber wie ich schon unten geschrieben hab kenne ich mich mit SQLite nicht aus und kann da auch nichts zu sagen.
 
Zuletzt bearbeitet:

Valledalle

Golden Delicious
Registriert
18.07.09
Beiträge
10
Also das Programm soll auf dem iPhone laufen. Das hab ich total vergessen zu erwähnen, tut mir leid. Ich hab mir Programmieren (Java, C#) mit 2 Büchern selbst angelesen und meist die Fachwörter übersprungen, daher wusste ich auch nicht genau wie ich mein Vorhaben beschreiben soll. In den Büchern war auch kaum etwas über Datenbanken :(

Hatte "App" so als iPhone Programm gespeichert, das es natürlich für Application steht hab ich völlig verpennt. Das derzeitige Projekt hat gar nichts mit meinen alten zu tun.
 

Jamsven

London Pepping
Registriert
21.11.07
Beiträge
2.046
Datenbankdesign ist auch eine ganz andere Disziplin als Apps zu Programmieren.
Sowas gibt es meistens nur in Kombination von PHP&mySQL als Literatur.
Naja egal.

Seit FW 3.0 kannst du CoreData, was auf SQLite aufbaut, benutzen.
http://developer.apple.com/iphone/l...honeCoreData01/Introduction/Introduction.html

Bedenke aber das der kritischste Unterschied zu C# und Java die mangelnde "garbage collection" ist.
Will grob heißen: Was du an Speicher bestellst musst du am Ende auch explizit abbestellen.
Analog dazu bist du wahrscheinlich an einem automatik Auto gewöhnt und musst nun mit einem Schaltwagen zurecht kommen. ;)
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Du kannst auch deine Daten in XML speichern und in deiner App dann in NSDictionaries/NSArrays laden und erst am Schluss wieder speichern. Das geht dann super schnell. Braucht dann nicht ständig Dateizugriffe, die - nun mal echt - langsam sind!!

gruss ppocket
 

doeme89

Pomme Miel
Registriert
27.12.06
Beiträge
1.477
Zwar gibt es keine GARBAGE COLLECTION, aber informier dich doch mal über AutoreleasePools. Das ist auch ne feine Sache! ;)
 

Jamsven

London Pepping
Registriert
21.11.07
Beiträge
2.046
Zwar gibt es keine GARBAGE COLLECTION, aber informier dich doch mal über AutoreleasePools. Das ist auch ne feine Sache! ;)

Schön aber die Objekte brauchen auch eine autorelease Nachricht, wenn sie keinen convenience allocator haben. Außerdem muss man im Auge behalten, dass diese Objekte ohne Anker nur einen Zyklus "leben".

Ist immer noch eine Halbautomatik.
 

Valledalle

Golden Delicious
Registriert
18.07.09
Beiträge
10
Bedenke aber das der kritischste Unterschied zu C# und Java die mangelnde "garbage collection" ist.
Das hat mich am Anfang auch verwirrt, dass ich jetzt auf einmal Speicher zuweißen muss. Sobald ich mich für 100 $ angemeldet habe, kann ich mir ja Diagramme des Arbeitsspeichers anzeigen lassen. :)
Aber auch das mit den Pointern habe ich noch nicht ganz verstanden.

Was meint ihr zu Poljpocket beitrag?
Mit xml hatte ich leider bei C# keine guten Erfahrungen gemacht, was die Performance angeht. :(
 

Jamsven

London Pepping
Registriert
21.11.07
Beiträge
2.046
Das hat mich am Anfang auch verwirrt, dass ich jetzt auf einmal Speicher zuweißen muss. Sobald ich mich für 100 $ angemeldet habe, kann ich mir ja Diagramme des Arbeitsspeichers anzeigen lassen. :)
Aber auch das mit den Pointern habe ich noch nicht ganz verstanden.

Was meint ihr zu Poljpocket beitrag?
Mit xml hatte ich leider bei C# keine guten Erfahrungen gemacht, was die Performance angeht. :(

Core Data unterstützt auch XML und wenn du dir die Datenstruktur mit Core Data erstellt hast, dann brauchst du dich auch nicht mehr um den XML Import/Export zu kümmern.