Laden...

Datenbank-Wahl für kleines Büro mit Sicherung zu Hause

Erstellt von Mert93 vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.539 Views
M
Mert93 Themenstarter:in
64 Beiträge seit 2015
vor 8 Jahren
Datenbank-Wahl für kleines Büro mit Sicherung zu Hause

verwendetes Datenbanksystem: <Noch keine Auswahl>
Guten Morgen liebes C#'Forumler. 😃

Ich hätte eine frage bezüglich der Auswahl des Datenbankes.
Da meine Benutzeroberfläche so langsam dem ende zugeht muss ich mir nun Gedanken über die Verwaltung meiner Daten machen.
Da es mittlerweile so viele Datenbanken gibt wollte mich vorher mal euren Rat einholen bevor ich darauf los Tippe und mir einfach irgendeine Datenbank nehme und diese am ende ungeeignet ist und es für die Zwecke vielleicht ein besseren geeignet gibt.

Die Anwendung wird auf 2-3 Rechnern im Büro laufen und auf einem Heimrechner.
(Falls es eine Rolle spielt, auf allen läuft W10)

Ich hatte mir vorerst überlegt SQL-Express zu nutzen
Vorteil : Ich müsste die Anwendung nicht in Server-Client bereiche aufteilen sondern könnte die Datenbank im Netzwerk einfach für den Zweiten Rechner freigeben
Ein Weiterer vorteile wäre, der wechsel auf eines der anderen SQL-Servern von Microsoft.
Nachteil : Wie würde die Anwendung dann zuhause auf die Datenzugreifen können, da müsste ich dann auch Zuhause den SQL-Express Installieren oder mitliefern. Oder gibt es da einen anderen weg ohne den Server gleich überall Installieren zu müssen?

Auch steht die Auswahl für SQLite
Vorteil : Ich hätte kein Server, der überall Installiert werden müsste sondern könnte die DB-Datei einfach als Export auf einem Stick kopieren und zuhause dan importieren.
Nachteil : So müsste ich die Anwendung in einem Server-Client-Anwendung aufteilen (Und davon hab ich nicht grad viel Erfahrung)

Welche Datenbank würdet Ihr mir da empfehlen? Vielleicht gibts auch eine inder ich einfach ein export machen könnte die ohne weitere zusätzliche Installationen von Servern auch zuhause funktioniert und ich weiß es nur noch nicht 😄 Über einige Tipps würd ich mich sehr freuen. 😃

3.003 Beiträge seit 2006
vor 8 Jahren

Nimm in deine Überlegungen mit auf, das ganze per XML zu speichern. Ohne Datenbank.

Ansonsten hängt die Wahl sehr davon ab
a) was du damit anstellen willst
b) wieviel du damit anstellen willst
c) ob eine (deutliche) Zunahme der zu speichernden Daten in Zukunft zu erwarten ist.
d) welche Hardware dir zur Verfügung steht
...und weitere Punkte, die sicher den anderen noch einfallen.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

M
Mert93 Themenstarter:in
64 Beiträge seit 2015
vor 8 Jahren

LaTino:
Vielen Dank für deine Antwort. 😃
Es werden viele Daten gespeichert. Unteranderem
KundenDaten (Adresse, Name, Wohnort, Bank-Verbindung ect)
Rechnungswesen (Kunde, BelegNr, Betrag, Ware ect)
Waren ( WarenID, WarenBezeichnung, Menge, Einzel-Preis ect)
Leergut (LeergutID, Pfand, Preis ect)
usw.

Wenn ich all die Daten in XML speichern würde, würde dies sehr schnell sehr unübersichtlich werden und da viele Daten mit einander gekoppelt sind auch früher oder später zu Fehlern führen.
Um In der DB Platz zu sparen würde ich evnetuell vereinzelte Daten in XML speichern wie Waren, Leergut ect und in die DB nur die ID dan abspeichern.

6.911 Beiträge seit 2009
vor 8 Jahren

Hallo Mert93,

grundsätzlich musst du unterscheiden bzw. festlegen ob die Datenbank lokal - also mit jeder Anwendung - laufen soll od. ob sie als Server - alle haben die gleichen Datenbank - laufen soll.

Aufgrund deiner letzten Antwort würde ich wohl zu einer Serverlösung tendieren, sonst hast du immer Probleme mit der Synchronisation der Daten zwischen den lokalen Datenbanken.

Siehe Empfehlungen für SQL-Datenbank gesucht, Welche Datenbank für Desktopanwendung

Persönlich würde ich den SQL Server (Express) verwenden.

Wie würde die Anwendung dann zuhause auf die Datenzugreifen können, da müsste ich dann auch Zuhause den SQL-Express Installieren oder mitliefern

Zu Hause muss nicht unbedingt ein SQL Server installiert werden, das wäre - wegen Synchronisation - ja wieder kontraproduktiv.
Wenn du direkten Zugriff auf die DB zulassen willst, so könntest du das per VPN erledigen.
Eher besser und sicherer wäre aber ein indirekter Zugriff via WebService auf die Datenbank. D.h. dein Client-Programm kommuniziert mit dem WebService und der WebService wiederum spricht mit der Datenbank. Schau dir dazu z.B. "OData" an.

BTW: Hast du in der Grundüberlegung auch eine Web-Anwendung in Betracht gezogen? Diese könnte hier aufgrund der verteilten Client-Struktur ev. besser geeignet sein.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

3.003 Beiträge seit 2006
vor 8 Jahren

LaTino:
Vielen Dank für deine Antwort. 😃
Es werden viele Daten gespeichert. Unteranderem
KundenDaten (Adresse, Name, Wohnort, Bank-Verbindung ect)
Rechnungswesen (Kunde, BelegNr, Betrag, Ware ect)
Waren ( WarenID, WarenBezeichnung, Menge, Einzel-Preis ect)
Leergut (LeergutID, Pfand, Preis ect)
usw.

Ah, wir haben sehr unterschiedliche Begriffe von "viel" 😉 (viel wäre für mich, wenn der DDL-Export der Datenbank größer als sagen wir 200kB wäre (~30 Tabellen mit je 5-10 Feldern)).

Du hast Recht, bei dieser Möglichkeit musst du ein paar Handstände machen, um die Konsistenz der Daten zu gewährleisten. Die Frage ist also, was mehr Aufwand macht - da ist wieder deine Abschätzung gefragt. Andererseits lassen sich XML-Strukturen recht gut in eine DB migrieren, wenn man irgendwann die Nase voll hat. Deshalb der Vorschlag.

Ansonsten schließe ich mich gfoidl an. Clients, die per (Web/WCF/was auch immer-)Service Zugriff auf die Daten erhalten, und beim Service dann SqlExpress. Sollte locker reichen.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

M
Mert93 Themenstarter:in
64 Beiträge seit 2015
vor 8 Jahren

gfoidl:
Ein Webservice klingt Interessant leider stehen mir keine zu Verfügung.
Sollte ich es local abspeichern würde ich dann nicht für jede Anwendung eine Locale DB erstellen sondern nur eine auf dem Hauptrechner und auf dem Zweiten Arbeitsrechner würde ich die Daten dan an die Erstanwendung schicken und das er die dort abspeichert. Da beide im selben Netzwerk liegen dürfte da nicht so die Großen Probleme bestehen. Und für den Heimrechner würde ich dann die LocaleDB auf dem Hauptrechner im Grunde nur auf nem Stick exportieren (Da diese ja nur als backup dienen soll) und auf dem Heimrechner importieren.

Bei dem Server hätte ich nur ein bedenken. Ich habe vorher noch nie mit VPN's gearbeitet oder mich damit beschäftigt. Hättest du ein Gutes Tutorial oder ähnliches was ein den Einstieg erleichert ?

LaTino:
Die Datenbank wird in der fertigstellung ca 40-50 Tabellen mit je zwischen 7-13 Feldern besitzen.
Um dies jedoch zu verkürzen würde ich, wie oben schon geschrieben, vereinzelte Daten in XML speichern, die später zwar erweitert aber nicht geändert werden wie beispielsweise Waren, Warenpreise ect.

3.825 Beiträge seit 2006
vor 8 Jahren

Ich würde auch SQL Express verwenden.

Du kannst alle Daten im laufenden Betrieb sichern mit einem SQL Befehl :

backup database ... to disk = ...

Zuhause kannst Du die Sicherung in eine Datenbank einlesen mit :

restore database ... from disk = ...

Zuhause darfst Du dann allerdings keine Änderungen an den Daten vornehmen.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

6.911 Beiträge seit 2009
vor 8 Jahren

Hallo Mert93,

Webservice klingt Interessant leider stehen mir keine zu Verfügung

Die kannst du ja selbst erstellen 😉
Aber wie ich in der letzten Antwort - deine Informationen kommen schön Stück für Stück - sehe, brauchst du das dann doch nicht unbedingt.

Verstehe ich das also jetzt richtig, dass der Rechner zu Hause nur fürs Backup dient?
Falls ja, so hat Bernd eh geschrieben wie es geht.

VPN brauchst du dann auch nicht, wenn am Heimrechner nicht gearbeitet wird. Dort reicht das Verfahren mit Backup -> USB-Stick -> Restore schon aus.

vereinzelte Daten in XML speichern, die später zwar erweitert aber nicht geändert werden wie beispielsweise Waren, Warenpreise ect.

Das würde ich nicht tun. Speichere gleich alles in der DB.
Außerdem kann ich mir nicht vorstellen, dass sich Warenpreise nicht ändern werden.
Plane außerdem für die Zukunft vor - jetzt geht es in Einem - und lass die XML-Sachen weg.

XML kannst du für Konfigurationen, die rein das Programm - keine Daten -, betreffen verwenden. Wie z.B. bevorzugte Schriftart usw. Aber auch hier wäre es u.U. passender wenn du das [Tutorial] Konfigurationsmodell im .NET Framework verwendest.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

M
Mert93 Themenstarter:in
64 Beiträge seit 2015
vor 8 Jahren

gfoidl:
Ja, tut mir leid. Stimmt, hätte vorher noch mit schreiben sollen, dass es nur zu BackUp ist. 😦
Ok. 😮 Daran sieht man, dass ich da noch nicht so erfahren darin bin. Und vorerst lieber die Finger davon lassen ehe ich da noch was falsches mache und alles kein Sinn hat. 😄

BerndFfm & gfoidl:
Nun Schluss endlich ist die entscheidung gefällt. Ich nehme Access. hehe Nein Spaß. Ich nehme SQL-Express.
Werde mir noch einige Tutorials damit anschauen und Beispiel projekte erstmals entwickeln um mich darin vertraut zu machen um diese dann schluss endlich in das große Projekt einbinden. 😃

Ich danke euch vielmals für eure Antwort. Haben mir die Entscheidung auf jeden fall vereinfacht zu treffen. =)

Bei Problemen mit dem SQL-Server würde ich mich dann hier im Forum erneut bei euch melden. 😃
Liebe Grüße.

6.911 Beiträge seit 2009
vor 8 Jahren

Hallo Mert93,

Ich nehme Access. hehe Nein Spaß.

Der war gut 😃

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"