2011-01-13 12 views
1

Ich würde gerne lernen, wie man Daten von Objective-C zu einem RDBMS persistiert, und ich weiß nicht wirklich, wo ich anfangen soll, das zu lernen. Lerne ich ein RDBMS? Lerne ich Datenmodellierung?Was ist die Interaktion zwischen Objective-C und RDBMS wie SQLite?

Ich frage mich, gibt es Techniken oder besondere Überlegungen bei der Modellierung der Daten, um keine Fallstricke zu finden? I.e. Gibt es Faustregeln wie "nicht Unterklasse" oder "immer Ihre Attribute einkapseln".

In meiner begrenzten Erfahrung war es ziemlich schwierig, eine Objective-C-Klasse in eine relationale Datenbank zu übersetzen. Es scheint, dass CoreData mich auf den richtigen Weg bringen könnte, aber es scheint auch so zu sein, dass CoreData mir einfach eine Menge Dinge gibt, die ich für selbstverständlich halte (ich bin gespannt, was mit den SQL-Aufrufen unter der Haube passiert) ...). Oder verstehe ich diesen Rahmen falsch?

Ich bin auf der Suche nach Ressourcen, die mich den Weg des besseren Verständnisses RDBMSes und wie Objective-C-Modell Klassen in der Regel interagieren mit ihnen für die Datenspeicherung beginnen würde.

EDIT:

In dem Bemühen, meine eigene Neugier zu beantworten, ich habe SQL Joe Celko die für Smarties abgeholt sowie Anfang Datenbank-Design von Clare Churcher. Keiner von ihnen gibt wirklich viel über die Interaktion zwischen Controller-Klassen in Nicht-SQL-Sprachen (in meinem Fall Objective-C), SQL und der Datenbank geschrieben. Es gibt eine fehlende Verbindung, die ich einfach nicht verstehen ...

Antwort

0
+0

Also BaseTen sieht interessant aus, aber es gab mir keinen Einblick in den Kontext und die Theorie, wie RDBMS und Objective-C zusammenarbeiten, um Modelldaten (lokal oder extern) zu erhalten. Ich kann sehen, wie dieses Framework verwendet werden kann, um Theorien, Beispiele und Best Practices zu illustrieren, aber diese "High-Level" -Konzepte werden nicht nur durch das Erlernen der Syntax eines anderen Frameworks verstanden. Natürlich, wenn es _does_ und ich habe den Punkt verpasst, würde ich mich freuen, jedes weitere Verständnis, das Sie teilen könnten. – edelaney05

0

Sorry, dass es so lange gedauert hat, um Sie zurück zu kommen. Was Sie fragen, ist nicht spezifisch für Objective-C. Meine erste Einführung in die Verknüpfung von objektorientiertem Code mit RDBMS war Enterprise Object Frameworks in NextStep. Aber seitdem wurde diese Idee in den meisten objektorientierten Sprachen einschließlich Java und Ruby kopiert (siehe ActiveRecord).

Konzeptionell gibt es auf der Programmierseite normalerweise eine Entitätsklasse, die verwendet wird, um jede Zeile einer Tabelle darzustellen. In einigen Fällen, z. B. CoreData oder WebObjects, wird eine Zuordnung verwendet, um eine Schnittstelle zwischen dem Anwendungscode und der Datenbank zu erstellen. Aufgrund dieser Zuordnung kann ein Entwickler Instanzen der generischen Entitätsklasse verwenden, um die Daten zu repräsentieren. Natürlich wird diese Klasse oft subclassiert, um Methoden hinzuzufügen, die für eine bestimmte Entität spezifisch sind.

Angenommen, Sie haben eine Tabelle für Kontakte, die eine Spalte für den Vornamen und eine Spalte für den Nachnamen enthält. Oft möchten Sie in einer Anwendung den vollständigen Namen anzeigen. In einer Unterklasse der Entitätsklasse kann eine Methode hinzugefügt werden, die den Vor- und Nachnamen als einzelne Zeichenfolge zurückgibt.

In anderen Frameworks wie ActiveRecord, ich glaube, Sie müssen immer eine Unterklasse, die jede Tabelle darstellt.

Konzeptionell finde ich objektorientierte Programmierung, um mit RDBMS gut auszurichten.

Tabelle (Kontakte) -> Klasse (Kontakt)

Row -> Instanz der Klasse (ein Kontakt)

Säulen (vorName) -> Eigenschaften (auch bekannt als Instanzvariablen, Attribute) (vorName)

Beziehungen:

to-one (father) -> Properties (father, an instance of Contact) 

to-many (emailAddresses) -> Array (emailAddresses, an array of instances of EmailAddress class) 

Hope this beantwortet Ihre Frage besser,