Praktikums Projekt Java vs MySQL

Ranxus

Mitglied
Guten Morgen liebes Forum,

ich muss gestehen dies ist das erste mal das ich in einem Forum etwas poste sprich einen eigenen Beitrag verfasse daher habt bitte nachsehen sollte der Beitrag nicht hier reingehören. Kommen wir erst zu mir ich bin 21 Jahre alt und absolviere eine Ausbildung zum IT-Assistenten dort haben wir Programmieren als Unterrichtsfach. Die ersten 2 Jahre haben wir mit Java programmiert (OOP,GUI) jetzt im letzten Ausbildungsjahr haben wir angefangen mit MySQL zu arbeiten haben dort aber auch nicht wirklich viel praxisbezogenes gemacht eher trockene Theorie. Momentan befinde ich mich in einem Pflichtpraktikum was wir abschließen müssen um zu unserer Abschlussprüfung zugelassen zu werden. Dort habe ich von meinem Chef die Aufgabe erhalten ein Blenden Tool zu programmieren (das Praktikum findet in einem Online Handel für gebrauchte Computer Hardware statt) dieses Blenden Tool soll erst einmal ca 3000 Datensätze aus einer Excel Tabelle über eine CSV eingespeist bekommen dies allein ist schon ein großes Problem da wir im unterricht nie behandelt haben wie man Daten von extern importiert. Ich sollte erst einmal vielleicht das Programm an sich erklären. Erst einmal müssen die Datensätze übertragen werden danach sollte man die einzelnen Blenden in einem Suchfeld suchen können. Diese werden mithilfe eines sog. Blenden Codes realisiert. Dieser ist wie folgt zu verstehen jede Blende (hinten an den USB Ports, VGA Anschlüssen etc ist gemeint ) hat in der Regel eine andere Anordnung der Ports da es ja verschiedene Motherboard Hersteller gibt und an sich die Boards anders sind, es kann aber vorkommen das die Blenden mancher Hersteller Kompatibel miteinander sind. Deswegen hat mir die Firma das Projekt als Aufgabe bis zum ende des Praktikums gegeben. Nachdem man also den Blenden Code eingeben hat und die Suche gestartet hat sollen alle Blenden der unterschiedlichen Firmen die aber denselben Blenden Code haben ausgegeben werden. So wie ich es verstanden habe muss ich auch noch einen Zähler einbauen der die Anzahl der jeweiligen Blenden zufügt falls neue in den laden kommen oder abzieht falls welche verkauft werden. Außerdem muss ich das Programm danach so bearbeiten das der Endbenutzer also die Leute die damit arbeiten müssen leicht darauf zugreifen können. Ich bin momentan ehrlich gesagt etwas überfordert. Ich würde falls es irgendwie machtbar wäre das Tool mit MySQL schreiben da mir persönlich SQL wesentlich besser als Java gefällt. Aber ist das mit SQL überhaupt umsetzbar weil im großen und ganzen ist SQL doch ein Datenbanksystem und keine Programmiersprache wie Java wo mann halt alle Freiheiten hat.

Gruß Ranxus
 

mrBrown

Super-Moderator
Mitarbeiter
Ich weiß nicht, ob das jetzt deine Frage ist: aber der übliche Weg wäre, sowohl Java als auch MySQL zu nutzen (wobei beide beliebig durch äquivalentes ersetzbar sind).
 

Ranxus

Mitglied
Ersteinmal vielen dank für deine schnelle antwort :D
Gibt es irgendwelche Websites wo man das nachschlagen kann wie mann beides miteinander verknüpft? Habe ehrlich gesagt nicht den Hauch einer Ahnung wie das gehen soll.
Gruß Ranxus
 

Dukel

Top Contributor
MySql ist ein DBMS. Ein Anwender möchte sicher nicht mit sql Befehlen arbeiten.
Du kannst mit Java ein Frontend für MySql schreiben und in MySql die Daten speichern und ausgeben.
 

JStein52

Top Contributor
dieses Blenden Tool soll erst einmal ca 3000 Datensätze aus einer Excel Tabelle über eine CSV eingespeist bekommen
Findet dieser Vorgang nur einmal statt oder wird das immer mal wiederholt ? Gibt es die entsprechenden DB-Tabellen in MySQL schon oder musst du dir noch überlegen wie die Excelspalten auf DB-Tabellen abzubilden sind ? Das wäre mal der erste Schritt. Falls der Vorgang nur einmal stattfindet würde ich dafür ein eigenes Tool machen (Java oder Python)und das ganze in die Datenbank schaufeln. Unabhängig davon machst du dann eine Java-Anwendung mit grafischer Oberfläche zum suchen, zählen und einpflegen von Änderungen bzgl. der Blenden.
 

Ranxus

Mitglied
ersteinmal danke für eure ganzen rückmeldungen hätte ich echt nicht erwartet das das so schnell geht. ^^ und so wie ich es verstanden habe werden keine weiteren blenden eingespeist nur die anzahl wird hoch oder runter gezählt weil die blende ja dann nachdem sie gesucht wurden mit einem weiteren knopf abgezogen werden und noch ein weiterer knopf für die zugabe zuständig ist.
 

JStein52

Top Contributor
Ok, dann mache dir doch zunächst mal einen Plan wie die Daten von Excel nach MySQL umgesetzt werden sollen.
Das ist dann mit Java oder Python (darfst du das verwenden bzw. kennst du es überhaupt ?) relativ fix umgesetzt.
Stichworte: JDBC, CSVReader und SQL (zum erstellen der Datenbank und der Tabelle(n) in MySQL.
 

truesoul

Top Contributor
Diese sind eher für Administratoren / DB-Admins.
Als Frontend für einen Benutzer würde ich dies nicht nutzen.

Es war nicht für Rede vom Client Benutzer. Ich bin davon ausgegangen, dass ein Client für MySQL gefragt wurde womit der TE tatsächlich administrativ arbeiten kann. :D

@Ranxus
Ist das richtig oder meinst du tatsächlich was anderes?

Grüße
 

Ranxus

Mitglied
@JStein52 Java schon hatten wir die ersten 2 Jahre im Programmierunterricht mit Python hatten wir nix zutun CSVReader auch nicht und was SQL angeht haben wir halt sehr viel Theorie gemacht die letzten Themen die wir vor dem Praktika behandelt haben waren Normalisierung sowie Funktionale Abhängigkeit. Gibt es diesbezüglich evtll Seiten die die Themen (JDBC und CSVReader) Tutorialmässig erläutern also von Anfang an ?
@truesoul Das Programm soll von den Pcs der Einsteller die hier arbeiten laufen sprich das Programm wird auf den Festplatten installiert oder was meinst du?

LG Ranxus
 

JStein52

Top Contributor
was SQL angeht haben wir halt sehr viel Theorie gemacht
Aber du weisst wie du in MySQL eine Datenbank anlegst, wie du Tabellen definierst und du hast eine Idee wie du die Felder (Spalten) deiner Excel-Datei auf Datenbankfelder abbilden willst ?
Zu JDBC kannst du hier mal lesen: http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_24_001.htm
und CSVReader goggelst du einfach mal, da findest du bestimmt ein einfaches Tutorial das beschreibt wie man eine csv-Datei zeilenweise einliest und dann mit den gelesenen Feldern was macht
 

AndiE

Top Contributor
Das Programm soll von den Pcs der Einsteller die hier arbeiten laufen sprich das Programm wird auf den Festplatten installiert oder was meinst du?

Ich will mal zusammenfassen. Es gibt eine Excel-Datei, in der 3000 I/O-Blenden abgelegt sind, wobei jeweils einige davon den gleichen Blendencode haben, also miteinander kompatibel sind. Im Lager der Firma werden nun ausgebaute oder neue Blenden abgelegt und die Anzahl der Blenden in dieser Datei entsprechend aktualisiert. Es gibt eine Anzahl Monteure, die ein Tool bekommen sollen, mit deren Hilfe sie Blenden nach dem Blendencode suchen, diese entnehmen oder auch ausgebaute Blenden im Lager und der Datei ablegen können.

Ist das so richtig verstanden?

Wenn ja- Brauchst du ein Serverprogramm, auf dem die Datei bearbeitet wird, und Clientprogramme, mit denen die Monteure mit diesem Serverprogramm kommunizieren. Das Serverprogamm selbst wird erst mit deiner Datenbank kommunizieren. So würde ich das machen.
 

Ranxus

Mitglied
Guten Morgen,
@AndiE Genau so meinte ich das aber würde das auch mit Java realisiert werden können ? Und wenn nein was für Serverprogramme eignen sich hierfür ?
@JStein52 Das mit MySQL ist keine Vorgabe ich habe halt bisher nur mit Java und MySQL mit was ich arbeite ist laut Praktikumschef egal.

Gestern abend sprach nochmal meine Praktikumschef mit mir und wollte jetzt das die Excel die importiert wird später nachdem sie bearbeitet wurde wieder exportiert wird damit man die dann auf Excel weiterbearbeiten kann. Denn Vorgang will er am besten mit einem Button realisiert haben hinzukommt noch, dass er einen neuen Button möchte der Umbucht sprich im Lager selbst also der ausgabe der Suche die Blenden einzeln Verteilen kann. Außerdem wollte er noch einen neue Kategorie wo drinsteht wie oft die Blende für das Motherboard verkauft wird damit man beim Umbuchen die Blenden gleich in die "Topseller" verschieben kann.

Ich muss ehrlich gesagt sagen das er sich zuviel über meine Kenntnisse vorstellt es ist wie gesagt nur ein Teil meiner Ausbildung und ich habe Programmierunterricht 4 1/2 h die Woche. Wenn jemand eine Idee hätte wie es rel. einfach zu realisieren wäre dann wäre ich dankbar für Ratschläge.

LG Ranxus
 

truesoul

Top Contributor
Genau so meinte ich das aber würde das auch mit Java realisiert werden können ? Und wenn nein was für Serverprogramme eignen sich hierfür ?

Ja mit Java ist es möglich.
Ein Möglichkeit wäre https://projects.spring.io/spring-boot/

Mit PHP oder Node.js (JavaScript) ist es auch möglich. Und vielen anderen Sprachen.
Node.js könnte auch schon für diese kleine Anwendung ausreichen, wenn man JavaScript vielleicht besser beherrscht als Java.

Als Frontend kann man auf reines HTML5+CSS+JavaScript setzen.
Oder man nimmt Frameworks wie Angular, React oder Vue.js zum Beispiel.

Du solltest dich dann auch mit Http: Request und Response einlesen. Dann mit Datentypen wie JSON (REST) oder XML (Soap).

Benutzeroberfläche:
Also meine Empfehlung wäre, das mit HTML5+CSS+JavaScript umzusetzen und wenn kaum oder keine Kenntnisse in diesen 3 Teilen dann mit Java Swing/JavaFX.

Backend:
Und als Serveranwendung auf Spring Boot zu setzen, wenn in JavaScript keine Kenntnisse vorhanden sind, ansonsten Node.JS

P. S Finde es aber auch schon Aufwendig für ein Praktikanten sich gleich mit DB, Backend und Frontend zu beschäftigen.

Grüße
 
Zuletzt bearbeitet:

JStein52

Top Contributor
P. S Finde es aber auch schon Aufwendig für ein Praktikanten sich gleich mit DB, Backend und Frontend zu beschäftigen
Genau. Ich würde ihm auch deshalb nicht alle möglichen Techniken und Begriffe empfehlen sondern ihm sagen sich auf einen Java-Client mit Swing-Oberfläche und jdbc-Datenbankzugriff zu beschränken. Dieser Client läuft dann auf den PC's der Anwender und MySQL ist der Server. Er soll ja auch in einer überschaubaren Zeit damit fertig werden.
Und um sich langsam heranzuarbeiten meine Empfehlung zunächst mal ein Tool zu bauen das die Daten von Excel nach MySQL übernimmt. Das ist überschaubar und in ein paar Tagen gemacht. Damit arbeitet er sich in das Thema ein und kann anschliessend den Client mit grafischer Oberfläche entwickeln.
 

mrBrown

Super-Moderator
Mitarbeiter
P. S Finde es aber auch schon Aufwendig für ein Praktikanten sich gleich mit DB, Backend und Frontend zu beschäftigen.
Pflichtpraktikum am Ende der Ausbildung - da finde ich das ehrlich gesagt angemessen. Das ist eine ziemlich simple Anwendung...

Dann mit Datentypen wie JSON (REST) oder XML (Soap).
Die Unterscheidung ist etwas ungünstig, für REST ist das Format egal und nicht auf JSON beschränkt.
 

truesoul

Top Contributor
Die Unterscheidung ist etwas ungünstig, für REST ist das Format egal und nicht auf JSON beschränkt.

Ja der Satz, so wie ich ihn geschrieben habe, ist natürlich falsch.

Sollte eher lauten so JSON und XML.
Und Soap und REST.

Pflichtpraktikum am Ende der Ausbildung - da finde ich das ehrlich gesagt angemessen. Das ist eine ziemlich simple Anwendung...

Ja natürlich ist das eine simple Anwendung, für die jenigen die das schon öfters gemacht haben.
Sagen wir es mal so, für dem TE könnte es aufwendig sein, wenn seine Praktikumszeit nicht besonders lang ist.
Die wurde nicht erwähnt, zumindest habe ich diese nicht gefunden.
 

truesoul

Top Contributor
Genau. Ich würde ihm auch deshalb nicht alle möglichen Techniken und Begriffe empfehlen sondern ihm sagen sich auf einen Java-Client mit Swing-Oberfläche und jdbc-Datenbankzugriff zu beschränken. Dieser Client läuft dann auf den PC's der Anwender und MySQL ist der Server. Er soll ja auch in einer überschaubaren Zeit damit fertig werden.
Und um sich langsam heranzuarbeiten meine Empfehlung zunächst mal ein Tool zu bauen das die Daten von Excel nach MySQL übernimmt. Das ist überschaubar und in ein paar Tagen gemacht. Damit arbeitet er sich in das Thema ein und kann anschliessend den Client mit grafischer Oberfläche entwickeln.

Bei einer kurzen Praktikumszeit wäre die Variante die einfachste. Ich bin erstmal nicht darauf eingegangen wie was umgesetzt werden könnte. Aber das mit dem Tool macht natürlich Sinn.

Nur wenn das Praktikum über mehrere Monate hinaus geht, ist es vielleicht nicht so gut, nach ein paar Tagen mit der Arbeit fertig zu werden. Wobei es natürlich auch Eindruck machen könnte.

Und wenn wir davon ausgehen dass das Praktikum über mehrere Monate geht und es für den Leiter in Ordnung geht, ist es sicher nicht falsch eine Spring-Boot Anwendung zu schreiben die als Server dann tatsächlich fungiert.

Besser früher mit dem alltäglichen zu beginnen und im Lebenslauf dann auch drin stehen haben, ich habe auch eine Serveranwendung geschrieben und dazu Frontend in HTML+JavaScript oder Swing. Und kenne mich mit JSON, XML, REST oder Soap aus.

Kommt bestimmt besser als "ich habe Java Swing mit MySQL" gemacht. :)

Und es kommt sicher auch gut an, wenn man

Nur meine persönliche Meinung.

Grüße
 
Zuletzt bearbeitet:

JStein52

Top Contributor
@truesoul Prinzipiell hast du schon recht. Aber ich hatte ihn jetzt so verstanden dass er dafür nicht allzuviel Zeit hat und ausserdem diese ganzen für ihn neuen Begriffe ihn eher erschlagen als ihm helfen. Aber letztlich muss er abschätzen was für ihn richtig und wichtig ist.

Edit: der GAU wäre wenn er mit zu hochgesteckten Zielen beginnt und am Ende nichts wirklich fertig kriegt.
 

M.L.

Top Contributor
Um mit Java auf Excel lesend/schreibend zuzugreifen gibt es z.B. Apache POI: https://poi.apache.org
Aber -ohne Java- mit Excel die Daten als .csv zu exportieren und dann in MySQL (und der MYSQL Workbench) zu importieren dürfte auch möglich sein.
 

Danloc

Mitglied
Hallo Ranxus,

meiner Meinung nach, wird es dich aktuell nicht an dein Ziel bringen, wenn du versuchst dir vorzustellen, mit welchen Techniken und wie genau du das Programm programmieren willst.
Auf diese Art und Weise, können es Leute angehen, die etwas mehr Erfahrung besitzen als du und die nicht von all den Fachbegriffen erschlagen werden (du bist gedanklich ein Schritt zu weit).
Ich denke, dein Problem liegt noch etwas weiter "vorne", die "Probleme" mit der Programmiersprache, syntax, logic usw. kommen später und lassen sich dann Stück für Stück in der Praxis lösen (In deinem Fall).

Da du kein ausgelernter Entwickler mit Berufserfahrung bist, musst du dich nicht nur um die Entwicklung eines Programmes kümmern, sondern dir gleichzeitig die dafür benötigten Techniken aneignen und anwenden.
An dieser Stelle bist du aktuell und damit du jetzt nicht "unter" gehst, muss du das Projekt organisieren und Stück für Stück angehen.

Ich erkläre einmal wie ich das meine und erläutere Beispielhalf, wie man es umsetzten könnte. Ggf. hast du auch schon einige dieser Schritte erledigt oder Andere Läute übernehmen Teile davon, wie z.B. "ein Administrator richtet die Datenbank ein". Aber gehen wir einfach mal davon aus, dass alles deine Aufgabe ist. Teile weg lassen wird der einfachste Part ;).

Schritt 1: Aufgabenstellung ausarbeiten
Kläre mit deinem vorgesetzten, was das das Programm genau können soll und schreibe es dir auf.
Wie wird es Bedient? Wie kommen Daten in das Programm? Welche Funktionen muss es haben? Wie soll es aussehen? Was soll es Können?

Schritt 2: Soll- /Ist Analyse
Wie wird aktuell gearbeiten und wie soll später mit deinem Programm gearbeitet werden?
Müssen Daten übernommen werden und in welchem Format liegen diese vor?
(Beispiel: Aktuell arbeitet ein Mitarbeiter mit einer Excel Tabelle. Später soll alles in einer Datenbank verwaltet werden. Soll von mehreren Arbeitsplätzen gleichzeitig gearbeitet werden? Wie kommen die Daten später in die Datenbank? können diese von Hand eingetragen werden oder muss das Programm immer wieder von Excel Tabellen gespeist werden?)

Erst jetzt, wenn dir genau klar ist, wie es am Ende funktionieren soll, kannst du anfangen dir gedanken zu machen, wie das ganze technisch umgesetzt werden könnte.

Und jetzt wie schon gesagt, stück für stück ...

Nehmen wir an, es wird mit einer Datenbank umgesetzt (was auch üblich ist) und die Datenbank soll lokal auf einem einzigen Rechner installiert werden. Jetzt musst du dich eigentlich nur für ein Datenbanksystem, welches deinen Anforderungen entspricht entscheiden. In deinem Fall, würde ich MySQL nehmen.

Jetzt kannst du damit anfangen, einen Teil deines Projektes umzusetzte! Nämlich die Datenbank zu installieren.
Nimm dir Bücher, Webseiten, Youtube usw. zur Hand und lese dir durch, wie so eine Datenbank einzurichten ist.

Wenn die Datenbank läuft, hast du schon einen Teil deines Projektes umgesetzt. Außerdem kannst du jetzt konkrete Fragen hier im Forum stellen, wenn du an einigen Stellen nicht weiter kommst. Du kannst ebenfalls anfangern zu experimentieren und rumzustesten.

Jetzt kannst du auch anfangen zu programmieren. Du musst dich eigentlich nur für eine Programmiersprache deiner Wahl entscheiden. Da du ja bereits etwas erfahrung mit Java hast und wir in einem Java forum sind, wird es wohl auch Java werden ;).

Die Vorgehensweise bleibt allerdings die gleiche ... Stück für Stück.
Nimm dir Bücher, Webseiten, Forum, Youtube usw.. und Fange klein an.
Bau erstmal eine Datenbankverbidnugn auf. Lese Daten aus der Datenbank. Schreibe etwas in die Datenbank.
Wenn du "kleine" Programmteile fertig hast, gehst du auf die gleiche weise vor, bis dein Programm zu der Funktionalität herangewachsen ist, die du am Ende erreichen musst.

Also das wäre ein Beispeil, wie ich an deiner Stelle ein solches Projekt umsetzten würde. Natürlich muss die genaue Vorgehensweise jeder für sich selbst herausfinden aber wenn du dir keinen "Plan" machst kannst du auch nicht Schritt für Schritt vorgehen, was in deinem Fall aber notwendig scheint, weil du ja alles gleichzeitig lernen musst.

Solltest du an einigen Stellen Probleme haben oder nicht weiter kommen, kannst du Fragen viel gezielter stellen und ich bin sicher, hier ist immer jemand der dir helfen kann ;).

In diesem Sinne, viel Erfolg.

Gruß Danloc
 

Ranxus

Mitglied
@truesoul ich habe noch ca 2 1/2 Wochen Praktikum.
@M.L. vielen dank für den link ich glaube das könnte mir echt weiterhelfen.
@Danloc ich wollte eig versuchen über eine ArrayList eine große Datenbank in Java aufzubauen bzw ich nicht weiss wie ich Java mit MySQL verbinde weil das Programm an sich wird ja auf die Datenbank zugreifen müssen.

Gruß Ranxus
PS: Vielen dank für eure ganzen tollen Ratschläge. :D
 

Danloc

Mitglied
Moin Ranxus,

ich glaube du musst erstmal verstehen, wie Daten in einer Datenbank gespeichern/verwaltet werden und wie das mit den Methoden und Propertys einer klasse zusammenspielt. :confused:

Ob du in deinem Fall ein array benötigst, kann ich so nicht beurteilen. Der Gadenke, die Tabelle in Form eines arrays, im Programmcode zurechzubauen und das 1 zu 1 in die Datenbank zu schreiben, ist aber grunlegen falsch.

Wenn du Lust hättest, könen wir uns gerne mal über Skype, Discord, Teamspeak... unterhalten. (Nachmittags)
Ich werde dir keinen fertigen Code schreiben und dein Projekt zu ende bringen, kann dir aber mal etwas ausführlicher erklären wie das ganze zusammenspielt ggf. ne Datenbank installieren und ein paar Beispiel methode usw. mit dir schreiben, mit denen du dann anfangen und weiter arbeiten kannst. ;)
 

mrBrown

Super-Moderator
Mitarbeiter
Ob du in deinem Fall ein array benötigst, kann ich so nicht beurteilen. Der Gadenke, die Tabelle in Form eines arrays, im Programmcode zurechzubauen und das 1 zu 1 in die Datenbank zu schreiben, ist aber grunlegen falsch.
Er schrieb von ArrayList, nicht von Array ;)
(Und das wäre sehr nah an dem, womit ich auch anfangen würde...)


Bei der knappen Zeit würde ich auch erstmal gänzlich auf eine Datenbank verzichten und rein mit den CSV-Daten arbeiten.
@Ranxus mit JavaFX oder Swing hast du schon mal gearbeitet? Dann würde ich das ganze damit umsetzen, und mich nicht extra in Web-Entwicklung einarbeiten (oder ist es irgendwo anders spezifiziert?)
 

Danloc

Mitglied
Bei der knappen Zeit würde ich auch erstmal gänzlich auf eine Datenbank verzichten und rein mit den CSV-Daten arbeiten.
Das würde ich aufgrund der Aufgabenstellung auf keinen Fall so machen! Ich denke es wird viel fehleranfälliger und sogar komplizierter wenn er keine Datenbank hat. So kann er sich eine Query schreiben die dann sauber mit IDs (in diesem Fall z.B die Artikelnummer) arbeitet.

Eine MySQL Datenbank ist in c.a 10 Minuten installiert. Einen benutzer anzulegen, sollte auch kein Hxenwerk sein. (Sogar wenn man keine Ahnung hat).

Er möchte später ja auch Artikel miteinandern vergleichen. Er soll ja die Artikelnummern, die zu den gehäuse passen ermitteln und den dazugehörigen Lagerbestand ausgeben. Ich denke spätesdens da ist eine Datenbank, und die Verwendung von SQL sehr Hilfreich (das wäre in einer CSV mit java deutlich umfangreicher...) und in 2 1/2 Wochen, ist das locker zu lösen.
 

truesoul

Top Contributor
Das würde ich aufgrund der Aufgabenstellung auf keinen Fall so machen! Ich denke es wird viel fehleranfälliger und sogar komplizierter wenn er keine Datenbank hat. So kann er sich eine Query schreiben die dann sauber mit IDs (in diesem Fall z.B die Artikelnummer) arbeitet.

Eine MySQL Datenbank ist in c.a 10 Minuten installiert. Einen benutzer anzulegen, sollte auch kein Hxenwerk sein. (Sogar wenn man keine Ahnung hat).

Er möchte später ja auch Artikel miteinandern vergleichen. Er soll ja die Artikelnummern, die zu den gehäuse passen ermitteln und den dazugehörigen Lagerbestand ausgeben. Ich denke spätesdens da ist eine Datenbank, und die Verwendung von SQL sehr Hilfreich (das wäre in einer CSV mit java deutlich umfangreicher...) und in 2 1/2 Wochen, ist das locker zu lösen.

Na ja, er kann es auch erstmal mocken.
Die Datenbank sollte er aber nicht weglassen nur nicht zwingend damit beginnen.
Er muss ja erstmal die Daten aus der csv lesen können. Dann anzeigen und dann kann er sich mit der DB beschäftigen.

Wenn er viel Zeit mit der DB vergeutet und dann keine Zeit mehr hat für die GUI ist schlechter als wenn er csv auslesen und Anzeigen kann.
 
Zuletzt bearbeitet:

JStein52

Top Contributor
Bei der Frage Datenbank ja oder nein sehe ich eher das Problem dass das ganze nicht mehrbenutzerfähig wird wenn er mit einer Datei arbeitet. Am Ende gibt es 10 verschiedene csv- oder xls-Dateien mit unterschiedlichen Inhalten. Das wird das Chaos
 

mrBrown

Super-Moderator
Mitarbeiter
Eine MySQL Datenbank ist in c.a 10 Minuten installiert. Einen benutzer anzulegen, sollte auch kein Hxenwerk sein. (Sogar wenn man keine Ahnung hat).
Wenn man nicht unnötigerweise MySQL nehmen würde, wäre es nicht mal Aufwand von Minuten...

Das würde ich aufgrund der Aufgabenstellung auf keinen Fall so machen
Da steht nichts von Datenbanken, also ist die in dem Punkt egal.

Das würde ich aufgrund der Aufgabenstellung auf keinen Fall so machen! Ich denke es wird viel fehleranfälliger und sogar komplizierter wenn er keine Datenbank hat. So kann er sich eine Query schreiben die dann sauber mit IDs (in diesem Fall z.B die Artikelnummer) arbeitet.
Kann er auch, wenn er alles in Java hat.
Muss halt nur sauber abstrahieren (was ich auch als Grundvoraussetzung für arbeiten mit DBs sehe (und als bewertender höher einschätze als irgendwas mit DBs gemacht zu haben)).

Er möchte später ja auch Artikel miteinandern vergleichen. Er soll ja die Artikelnummern, die zu den gehäuse passen ermitteln und den dazugehörigen Lagerbestand ausgeben. Ich denke spätesdens da ist eine Datenbank, und die Verwendung von SQL sehr Hilfreich (das wäre in einer CSV mit java deutlich umfangreicher...) und in 2 1/2 Wochen, ist das locker zu lösen.
Kann er genauso gut ohne DB.
Sogar leichter, da er keine DB beachten muss.

Bei der Frage Datenbank ja oder nein sehe ich eher das Problem dass das ganze nicht mehrbenutzerfähig wird wenn er mit einer Datei arbeitet. Am Ende gibt es 10 verschiedene csv- oder xls-Dateien mit unterschiedlichen Inhalten. Das wird das Chaos
Mehrbenutzerfähigkeit kommt nicht in den Anforderungen vor ;)
Und wenn die Frage war, ob man das in SQL schreiben kann, kann man da ruhig etwas tiefer stapeln...
 

JStein52

Top Contributor
Außerdem muss ich das Programm danach so bearbeiten das der Endbenutzer also die Leute die damit arbeiten müssen leicht darauf zugreifen können.
Mehrbenutzerfähigkeit kommt nicht in den Anforderungen vor
Ich weiss, steht ein bisschen verklausuliert da. Aber trotz allem wird mir schlecht wenn ich mir vorstelle dass da einerseits mit Excel an den Daten rumgearbeitet wird, andererseits mit seinem Programm und das vielleicht noch auf mehr als einem PC. Und ich vermute mal das was er da machen soll soll ja nicht nur irgendwie laufen sondern soll auch in dieser Firma in der er sein Praktikum macht eingesetzt werden. Dann sollte es schon sicher handhabbar sein sonst bricht das Blendenchaos aus.
Ist aber alles ein bisschen Spekulation und wir wissen ja nicht so viel über die Anforderungen. Vielleicht gibt es in dieser Fa. sogar schon einen MySQL-Server und man muss nur ein bisschen Datenbank einrichten ???
 

Danloc

Mitglied
Ok, halten wir also fest, jeder hat seine ganz eigene Meinung dazu.
Fakt ist allerdings, das man für so einen Fall üblicherweise Datenbanken benutzt. Dafür wurden sie erfunden.
Wenn es also darum geht, dass er bei der ganzen Sache etwas lernt, sollte er es gleich "richtig" lernen. Eine Quick&Dirty Lösung, wird für seinen Anwendungsfall vielleicht mehr oder weniger gut funktioneren, wird ihm aber weniger Aufschluss darüber geben, wie Programme die mit Daten umgehen, im professionellen Umfeld entwickelt werden.

Kann er auch, wenn er alles in Java hat.
Muss halt nur sauber abstrahieren (was ich auch als Grundvoraussetzung für arbeiten mit DBs sehe (und als bewertender höher einschätze als irgendwas mit DBs gemacht zu haben)).
Natürlich kann er, aber üblicheriwese macht man so etwas mit SQL Querys. Da kann man auch nicht sagen "irgendwas in einem DBs machen". Das ist täglich brot für einen Entwickler und von der programmiersprache absoulut unabhängig. Ohne SQL kommt man nicht weit.

Lösen könnte man seine Aufgabe auch mit einem batch script, welche die Artikel in einer .txt datei speichert. Aber ob es darum wirklich geht ..
 

mrBrown

Super-Moderator
Mitarbeiter
Fakt ist allerdings, das man für so einen Fall üblicherweise Datenbanken benutzt. Dafür wurden sie erfunden.
Wenn es also darum geht, dass er bei der ganzen Sache etwas lernt, sollte er es gleich "richtig" lernen. Eine Quick&Dirty Lösung, wird für seinen Anwendungsfall vielleicht mehr oder weniger gut funktioneren, wird ihm aber weniger Aufschluss darüber geben, wie Programme die mit Daten umgehen, im professionellen Umfeld entwickelt werden.
Fakt ist, das Sätze, die mit "Fakt ist" beginnen, Unsinn sind.

Ich rede nicht von Quick&Dirty, sondern davon, wie man es richtig macht - eben mit sauberer Abstraktion.
Ob die Daten in einer Datenbank, in einer CSV oder gemockt vorliege, ist dann unerheblich und lässt sich beliebig austauschen.

Natürlich kann er, aber üblicheriwese macht man so etwas mit SQL Querys. Da kann man auch nicht sagen "irgendwas in einem DBs machen". Das ist täglich brot für einen Entwickler und von der programmiersprache absoulut unabhängig. Ohne SQL kommt man nicht weit.
"von der programmiersprache absoulut unabhängig" ist aber auch sauberes Design, und dann merkt man in der Anwendung nicht, ob da eine DB oder eine csv hinter sitzt.

Was mir dazu einfällt:
Uncle Bob hat gesagt.:
The database is just a detail that you don’t need to figure out right away.
https://8thlight.com/blog/uncle-bob/2012/05/15/NODB.html
 

JStein52

Top Contributor
Fakt ist doch dass @Danloc im konkreten Fall recht hat. Bei knapp 2 1/2 Wochen Zeit bleibt nicht viel anderes als sich hinsetzen und klären ob Datenbank oder nicht (mit seinem Praktikumsbetreuer) und das möglichst schnell. Wobei ich es auch so sehe dass Textdatei oder ähnlicher Firlefanz Quatsch ist, es geht ja nicht darum ob das theoretisch auch machbar wäre. Die UseCases aufschreiben (sind hier wahrscheinlich nur Daten anzeigen, Blendenanzahl verändern, Daten abspeichern). Soll auf mehreren PCs mit dem Programm gearbeitet werden, wie kann man das drohende Datenchaos vermeiden? Dann sich Gedanken machen wie die GUI dazu aussehen soll (am besten Prototyping mit einem GUI-Builder von NetBeans oder Eclipse) und dann beginnen und sich nicht ständig neue Begriffe und Techniken o.ä. reinziehen. Aber das war mein Vorschlag schon vor einer Woche. Und ich sach noch ...;););)
 

mrBrown

Super-Moderator
Mitarbeiter
Fakt ist doch dass @Danloc im konkreten Fall recht hat.
Fakt ist doch, dass er nicht Recht hat, dass die Datenbank Zentral wäre ;) Kommt ja in deiner Ausführung auch nicht mal vor

Und Fakt ist eben auch, das Sätze mit "Fakt ist", Unsinn sind :p

Bei knapp 2 1/2 Wochen Zeit bleibt nicht viel anderes als sich hinsetzen und klären ob Datenbank oder nicht (mit seinem Praktikumsbetreuer) und das möglichst schnell. Wobei ich es auch so sehe dass Textdatei oder ähnlicher Firlefanz Quatsch ist, es geht ja nicht darum ob das theoretisch auch machbar wäre. Die UseCases aufschreiben (sind hier wahrscheinlich nur Daten anzeigen, Blendenanzahl verändern, Daten abspeichern). Soll auf mehreren PCs mit dem Programm gearbeitet werden, wie kann man das drohende Datenchaos vermeiden? Dann sich Gedanken machen wie die GUI dazu aussehen soll (am besten Prototyping mit einem GUI-Builder von NetBeans oder Eclipse) und dann beginnen und sich nicht ständig neue Begriffe und Techniken o.ä. reinziehen. Aber das war mein Vorschlag schon vor einer Woche. Und ich sach noch ...;););)
Das ist der richtige Weg - und das ist alles unabhängig von einer Datenbank ;) Ob DB oder nicht ist dann nur noch eine Detailfrage ;)
 

Meniskusschaden

Top Contributor
Meines Erachtens ist gerade bei der InHouse-Programmierung für den Eigenbedarf eine vernünftig strukturierte DB das A und O. Mit teilweise vermurkster Software kann man da in der Regel ganz gut leben, aber die DB will man nicht mehr umbauen. Die DB ist da in der Praxis einfach das Zentrum der IT. Ich würde auf jeden Fall mit der DB anfangen und mich um den Datenimport kümmern. Dann hat man schon mal ein gut abgrenzbares Zwischenergebnis, auf dem notfalls der nächste Praktikant aufsetzen kann. Dabei sind auch die geringsten Schwierigkeiten zu erwarten. Danach würde ich einfach die Oberfläche programmieren und Kompromisse machen, um den Termin zu halten. Eine saubere Abstraktion im Vorfeld schafft ein Anfänger ohnehin nicht. Dann wird vermutlich gar nichts fertig.
 

mrBrown

Super-Moderator
Mitarbeiter
Meines Erachtens ist gerade bei der InHouse-Programmierung für den Eigenbedarf eine vernünftig strukturierte DB das A und O. Mit teilweise vermurkster Software kann man da in der Regel ganz gut leben, aber die DB will man nicht mehr umbauen. Die DB ist da in der Praxis einfach das Zentrum der IT.
Ist das nicht ein Grund mehr, die DB nicht als erstes zu designen, sondern dann, wenn die Anforderungen an diese feststehen? ;)
(übrigens einer der Punkte aus dem verlinkten Artikel...)
 

JStein52

Top Contributor
Ich würde auf jeden Fall mit der DB anfangen und mich um den Datenimport kümmern. Dann hat man schon mal ein gut abgrenzbares Zwischenergebnis, auf dem notfalls der nächste Praktikant aufsetzen kann. Dabei sind auch die geringsten Schwierigkeiten zu erwarten. Danach würde ich einfach die Oberfläche programmieren und Kompromisse machen, um den Termin zu halten. Eine saubere Abstraktion im Vorfeld schafft ein Anfänger ohnehin nicht. Dann wird vermutlich gar nichts fertig.
Exakt !!!
 

Meniskusschaden

Top Contributor
Ist das nicht ein Grund mehr, die DB nicht als erstes zu designen, sondern dann, wenn die Anforderungen an diese feststehen? ;)
Ja, die Gefahr, dass er die DB falsch strukturiert, besteht schon. Aber ich glaube, das würde ihm beim anderen Vorgehensmodell auch passieren. Ich halte es trotzdem für einfacher und anschaulicher, erst mal die nötigen Tabellen und deren Verknüpfungen zu erstellen. Dabei fallen Strukturfehler ja ganz gut auf, bevor er Arbeit in die Programmierung investiert hat. Generell plädiere ich in diesem Fall dafür, konkret zu beginnen und auf Probleme und Fehler wachsam zu reagieren und dadurch zu lernen.
 

mrBrown

Super-Moderator
Mitarbeiter
Ja, die Gefahr, dass er die DB falsch strukturiert, besteht schon. Aber ich glaube, das würde ihm beim anderen Vorgehensmodell auch passieren.
Natürlich kann das passieren - aber ein am Ende eingebauter Fehler ist meist leichter zu beheben, als ein am Anfang eingebauter.

Ich halte es trotzdem für einfacher und anschaulicher, erst mal die nötigen Tabellen und deren Verknüpfungen zu erstellen.
Hab ich bisher anders erlebt - die nötigen Tabellen und Verknüpfungen werden eben oft erst spät klar.

Dabei fallen Strukturfehler ja ganz gut auf, bevor er Arbeit in die Programmierung investiert hat.
Viele Fehler fallen aber erst während der Arbeit damit auf, würde man durch den anderen Ansatz verhindern...
 

JStein52

Top Contributor
Hallo ... Von was redet ihr hier ? Ihr solltet bedenken, diese Daten stehen zur Zeit in einer Excel-Tabelle. Welche Tabellen und Verknüpfungen sollten da in der DB schon vorkommen ? Ein Tabelle "Blenden" ... fertig. Attribute sind wahrscheinlich so ziemlich 1:1 durch die Spalten der Exceltabelle vorgegeben
 

mrBrown

Super-Moderator
Mitarbeiter
Hallo ... Von was redet ihr hier ? Ihr solltet bedenken, diese Daten stehen zur Zeit in einer Excel-Tabelle. Welche Tabellen und Verknüpfungen sollten da in der DB schon vorkommen ? Ein Tabelle "Blenden" ... fertig. Attribute sind wahrscheinlich so ziemlich 1:1 durch die Spalten der Exceltabelle vorgegeben
Wir reden von Normalisierung und so, sollte jedem der was mit Datenbanken macht ein Begriff sein.
Grad weil die aus einer Exceltabelle kommen, braucht man das, dort stehen Daten so gut wie nie in passender Form drin (und wenn doch, hat man da die Verknüpfungen)
 

JStein52

Top Contributor
Das Programm soll von den Pcs der Einsteller die hier arbeiten laufen sprich das Programm wird auf den Festplatten installiert
nur so nebenbei zum Thema mehrbenutzerfähig ...
Wir reden von Normalisierung und so, sollte jedem der was mit Datenbanken macht ein Begriff sein.
Gerade wolltest du ihm noch verkaufen er solle das ganze doch in einer csv-Datei erledigen ? Da hat er auch nur eine Tabelle Blenden mit ihren diversen Spalten ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Vorbereitung eines Praktikums Allgemeine Java-Themen 4
Zrebna Wie ermittelt man alle testbaren (zu testenden) Klassen in seinem Maven-Projekt? Allgemeine Java-Themen 23
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
Jose05 mit 2 - 3 Personen an einem Projekt coden Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
S Microservice Projekt verwalten Allgemeine Java-Themen 22
alinakeineAhnungv Hilfe bei einem Straßenbahn-Projekt von mir Allgemeine Java-Themen 18
O community projekt Allgemeine Java-Themen 9
T Projekt baut nicht mehr/lässt sich nicht mehr ausführen Allgemeine Java-Themen 6
pkm Warnungen in einem Drools-Projekt unterdrücken? Allgemeine Java-Themen 1
platofan23 Wie .txtDatei im Java Eclipse-Projekt bzw. in der Jar speichern? Allgemeine Java-Themen 7
O Suche Unterstützung für ein OpenSource-Projekt (grafischer Editor) Allgemeine Java-Themen 13
DonMalte Ambitioniertes Projekt für Einsteiger & Motivierte Allgemeine Java-Themen 0
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
M Brainstorming für mein Projekt Allgemeine Java-Themen 30
D Warum kann ich eine (deflaut) Klasse aus einer Libary in einem anderen Projekt benutzen? Allgemeine Java-Themen 3
J Alle Unit Tests in Maven Modul Projekt ausführen Allgemeine Java-Themen 7
xYurisha Eclipse, Projekt beschädigt! Allgemeine Java-Themen 6
P BlueJ BlueJ Gloop City Projekt Allgemeine Java-Themen 0
H Projekt Quadraturverfahren Rechner Allgemeine Java-Themen 2
S WebApplikation Projekt in Firma Allgemeine Java-Themen 2
S Eclipse Github Projekt in eigenes Projekt einbinden und nutzen Allgemeine Java-Themen 13
T iText mit eclipse richtig in Java-Projekt einbinden Allgemeine Java-Themen 2
J Java Projekt, Online-Datenabfrage, Visualisierung Allgemeine Java-Themen 3
markuskat Erste Schritte JavaEE WebApplication - Erstes Projekt Allgemeine Java-Themen 16
O Compiler-Fehler Wie kompiliere ich dieses Alt-Projekt ? Allgemeine Java-Themen 9
P Eclipse Projekt anlegen macht Problem Allgemeine Java-Themen 1
N Eclipse Projekt von GitHub in bestehendes Projekt einbinden Allgemeine Java-Themen 13
G Mein PDF Projekt mit iText Allgemeine Java-Themen 2
G Kleines Projekt Allgemeine Java-Themen 2
S Best Practice Brauche eine Idee für eine Java Projekt! Allgemeine Java-Themen 11
M Maven Dependency aus Projekt nicht aus Repo Allgemeine Java-Themen 3
S Erstes größeres Java Projekt: Etiketten Allgemeine Java-Themen 3
M Eclipse libgcrypt für window in java Projekt einbinden Allgemeine Java-Themen 1
N Kleines GUI/Sortier Projekt für die Uni Allgemeine Java-Themen 11
M Eclipse Eine xhtml aus einem JSF Projekt starten Allgemeine Java-Themen 2
A Android App Projekt Allgemeine Java-Themen 0
I Zu zweit an einem Projekt? Allgemeine Java-Themen 1
M SQL Datenbank in JAVA Projekt Allgemeine Java-Themen 3
U BlueJ NXT Projekt programmieren Allgemeine Java-Themen 0
C Projekt Realisierung Allgemeine Java-Themen 7
J C++ Projekt (QT) in Java mit Klassen (nicht imperativ) nutzen (BridJ? JavaCPP? SWIG? JNA? JNI?) Allgemeine Java-Themen 2
A Ausführbare Java-Datei aus Projekt und Datenbank Allgemeine Java-Themen 3
K Code zu einem Projekt entschluesseln Allgemeine Java-Themen 15
A mini Projekt Allgemeine Java-Themen 4
U Eclipse Java Projekt - Webservice einbinden Allgemeine Java-Themen 7
I Projekt wird nicht erstellt Allgemeine Java-Themen 2
R Aus Eclipse Projekt ein UML erzeugen Allgemeine Java-Themen 3
V System.out.println an jeder Stelle im Projekt löschen Allgemeine Java-Themen 4
M JSF-Projekt, Datasourceproblem Allgemeine Java-Themen 7
B Großes Projekt "gut" schreiben Allgemeine Java-Themen 22
maestr0 Programmatische Java Projekt Erstellung Allgemeine Java-Themen 2
J Projekt mit mehreren Einzelprogrammen Allgemeine Java-Themen 2
P Ant oder Dynamic Web Projekt Allgemeine Java-Themen 3
Kenan89 Riesen Java Projekt Allgemeine Java-Themen 10
127.0.0.1 Subversion neues SVN Projekt, keine Main gefunden ?! Allgemeine Java-Themen 7
S Compiler-Fehler Providing JavaCompiler within Projekt Allgemeine Java-Themen 10
P Eclipse Gemeinsam mit NetBeans an einem Projekt arbeiten? Allgemeine Java-Themen 3
T HTTP HttpWebRequest in Swing-Projekt nutzen Allgemeine Java-Themen 4
S .Classpath Datei im Eclipse Projekt Allgemeine Java-Themen 7
Ollek MVC - Anwendung auf mein Projekt Allgemeine Java-Themen 18
J Herangehensweise an ein Projekt? Allgemeine Java-Themen 11
N Hilfe bei Projekt Allgemeine Java-Themen 5
M Suche Java-Projekt zum Thema Elektrotechnik Allgemeine Java-Themen 6
A Java Projekt (Daten Eingeben, Speichern und in Listen Ausgeben) Allgemeine Java-Themen 6
M Erstes eigenes Projekt Allgemeine Java-Themen 5
C Architekturvorschläge für kleines Projekt Allgemeine Java-Themen 2
Y Notenbuch - Projekt Allgemeine Java-Themen 56
N php projekt in java importieren Allgemeine Java-Themen 4
E Neues Projekt - Welche GUI / IDE /Techniken / etc. Allgemeine Java-Themen 14
J Open Source Projekt anbieten - Leitfaden gesucht Allgemeine Java-Themen 3
N Idee für Java Projekt Allgemeine Java-Themen 30
M GoogleMaps mit Projekt verknüpfen Allgemeine Java-Themen 7
Y Auszuführendem Projekt mehr Speicherplatz zuweisen Allgemeine Java-Themen 3
S Umstellen Java-Projekt zum Web-Projekt Allgemeine Java-Themen 3
B Komplettes Projekt als UML Diagramm mit eUML...geht das? Allgemeine Java-Themen 10
P Projekt-Export Allgemeine Java-Themen 10
D eclipse projekt ohne eclipse ausführen? Allgemeine Java-Themen 14
P Jar-export funktioniert nur bei einem projekt nicht Allgemeine Java-Themen 5
S brauche dringend help bei einem projekt (Römisch-dezimal) Allgemeine Java-Themen 3
S Projekt in Jbuilder 05 Allgemeine Java-Themen 3
M Import findet das Projekt nicht. Allgemeine Java-Themen 5
G Projekt aus Firma zuhause importieren? Allgemeine Java-Themen 7
T Projekt zur Abschlussprüfung genug? Allgemeine Java-Themen 6
N Beteiligung an Projekt Allgemeine Java-Themen 6
F "source not found" in eigenem Projekt mit eigenen Allgemeine Java-Themen 2
S Swing-Projekt zum Üben Allgemeine Java-Themen 5
G ||| Textdateien aus dem eigenen Projekt lesen. Allgemeine Java-Themen 16
S Listener-Problematik in komplexem Projekt Allgemeine Java-Themen 2
I "Einstiegs Projekt" Allgemeine Java-Themen 20
S Projekt als Jar abspeichern! wie? Allgemeine Java-Themen 6
A Eigenes jar file in projekt einbinden Allgemeine Java-Themen 4
T Java-Projekt bei sourceforge.net Allgemeine Java-Themen 3
G Projekt Planung - Teamwork Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben