Datenbank - nur wie??
Geizhals » Forum » Programmierung » Datenbank - nur wie?? (8 Beiträge, 746 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Datenbank - nur wie??
07.11.2013, 20:17:22
Grüß euch!

Ich habe folgendes Problem:
Eine Datenbank zu verschiedenen Tieren soll vom Betreiber mit Bildern gefüllt werden und veschiedenen Texten (Haltungsberichte, Zuchtberichte etc.) versehen werden.

Wie gehe ich dies am Besten an?
Dachte daran eine PHP Maske zu machen, über die man (nur der Admin eben) zu einem Tier folgende Einträge machen kann:
Deutscher Name: Hauskatze;
Wissenschaftlicher Name: Felis felis;
Bild: miau.jpg, mietze.jpg, kitty.jpg;
Text: Nahrung, Haltung;
Nummerierung und Datum des Eintrag.

Soweit ist das alles mal kein Problem.
Aber: Muss halt jetzt 3 Bilder und 2 Texte definieren, aber ich will nicht bei jedem Vieh auf 3 Bilder und 2 Texte limitiert sein. Auch will ich keine maximale Anzahl definieren, da sich dies ja beliebig erweitern lassen soll.
Die Tabelle soll sich also dynamisch je nach Anzahl/Verfügbarkeit des Content erweitern.

Meine 1. Frage zu Bildern und Texten:
Wie mache ich dies am Besten?
In der DB nur den Link relativ zur Datei speichern?
Nur wie mache ich es, dass die Datei dann korrekt hochgeladen wird?

2. Frage: Wie kann ich eine unterschiedliche Anzahl von Bildern/Texten zum Datensatz hinzufügen und ordnen? Gibt bei Hauskatze sicher mehr Texte und Bilder als zum Igel.

Es soll dann nämlich ein JAVA Programm per Internet auf die DB zugreifen und die Daten abrufen sowie anzeigen. Eventuell auch per Browser.

Stehe da im Moment leider an.
Eventuell etwas anderes als MySQL verwenden?

Please help!!!

Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
.
Re: Datenbank - nur wie??
07.11.2013, 20:40:40
Aber: Muss halt jetzt 3 Bilder und 2 Texte definieren, aber ich will nicht bei
jedem Vieh auf 3 Bilder und 2 Texte limitiert sein. Auch will ich keine
maximale Anzahl definieren, da sich dies ja beliebig erweitern lassen soll.
Die Tabelle soll sich also dynamisch je nach Anzahl/Verfügbarkeit des Content
erweitern.


Du suchst Datenbanknormalisierung.

http://de.wikipedia.org/wiki/Datenbanknormalisierung

Meine 1. Frage zu Bildern und Texten:
Wie mache ich dies am Besten?
In der DB nur den Link relativ zur Datei speichern?
Nur wie mache ich es, dass die Datei dann korrekt hochgeladen wird?


Entweder du speicherst die Bilddaten in die Datenbank oder nur den Pfad zum Bild. Zweiteres ist in der Regel unproblematischer. Wo macht dir ein Dateiupload Sorgen?

2. Frage: Wie kann ich eine unterschiedliche Anzahl von Bildern/Texten zum
Datensatz hinzufügen und ordnen? Gibt bei Hauskatze sicher mehr Texte und
Bilder als zum Igel.


Natürlich.

Es soll dann nämlich ein JAVA Programm per Internet auf die DB zugreifen und
die Daten abrufen sowie anzeigen. Eventuell auch per Browser.


Also die Datenbank würde ich auf keinen Fall so konfigurieren, dass sie vom Internet aus erreichbar ist. Wenn du wirklich Zugriff auf die Daten brauchst, solltest du ein Webservice dafür erstellen (zB. mit einer REST-API).

Stehe da im Moment leider an.
Eventuell etwas anderes als MySQL verwenden?


Sagen wir so: Für deine Anforderungen dürfte das ziemlich egal sein. Bei MySQL hast du halt eine sehr hohe Auswahl an Hostern und es gibt sehr viele Anfängertutorials.

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
.
Re: Datenbank - nur wie??
07.11.2013, 20:41:44
Dir fehlen grundsätzliche Datenbankkenntnisse - da kann nichtmal MySQL was dafür ;-)

I.A. legst du eine zusätzliche Tabelle "Bilder" an. Die hat (mindestens) zwei Spalten - einmal eine Id (die auf den eigentlichen Datensatz verweist (Foreign Key), der eigentliche Datensatz hat ebenfalls eine Id ("Primary Key")). Die zweite Spalte beinhaltet dann die Rohdaten des Bildes (also halt irgendein Binary Datentyp).

Ein SQL Select statement würde dann z.B. so aussehen:

select tiere.id, tiere.name, tiere.DeutscherName, bilder.binaries from tiere, bilder where tiere.id = bilder.id and tiere.id = "gewünschte Id"

(oder mit einem join)

select tiere.id, tiere.name, tiere.DeutscherName, bilder.binaries from tiere join bilder on tiere.id = bilder.id where  tiere.id = "gewünschte Id"

du bekommst jetzt mehrere Datensätze die alle dieselbe ID haben (also auf dasselbe Tier verweisen), bei jedem Datensatz ist dann aber ein (anderes) Bild dabei. Du kannst also beliebig viele Bilder ablegen ohne dass du Spalten definieren musst.

Das Ganze nennt sich dann übrigens ER (Entity Relationship) Modell falls du es googlen willst.

Interessieren dich nur die Bilder zu einer bestimmten ID reicht natürlich auch ein

select bilder.binaries from bilder where id = ...

Wenn der Sturm losbricht,
verstummen die Einen vor Schrecken,
und die Anderen breiten, einem Adler gleich, die Flügel aus
und schwingen sich empor.

Herzlichen Dank an Raydoo für die Fotos

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
.
Re: Datenbank - nur wie??
07.11.2013, 21:45:08
Also ich rate mal, dass du ein wenig überfordert mit den Antworten meiner Vorgänger bist.

Also ich versuche es einfach auszudrücken.

Eine Datenbank besteht aus mehreren Tabellen.
Jede Spalte hat einen Überschrift und einen vorgegebenen Inhalt (z.B: Ein Datum, Uhrzeit, Text mit länge x, eine Zahl, eine Gleitkommazahl, etc.), kann man alles vorgeben.

Um nun wie du es willst zu einer Zeile mehrere Bilder zuzuordnen, macht man nichts anderes, als eine zweite Tabelle, in welcher eine Liste der Bilder angeführt wird.

Beispiel:
--- Tabelle Tiere
cat_id: 484
name: Hauskatze;
wiss_name: Felis felis;
gatt_id: 2
created: 2012-12-10
updated: 2012-12-20
owner_id: 5486
----
--- Tabelle Gattungen
gatt_id: 2
gattung: Katze
---
--- Tabelle User
owner_id: 5486
nick: blabla
pw: a_hash
---
--- Tabelle cat_info
cat_id:484
info_type:pic
info_txt:484/miau.jpg
uploaded:2012-12-10

cat_id:484
info_type:txt
info_txt:Blabla .... kitkat ...
uploaded:2012-12-15
---

Es ist nicht zwingend, dass du deine Bilder in der Datenbank speicherst.
Ich persönlich bevorzuge es sogar Bilder, pdfs, etc. im normalen Filesystem in festgelegte Verzeichnissen abzulegen.

Anstelle von MySQL kann man sehr viele unterschiedliche Datenbanken verwenden.
Von einen einfachen text-file mal abgesehen, denke ich an postgreSQL, SQLite und jede weitere ODBC unterstützende Datenbank kann ohne Problem mit php angesprochen werden.

Nur bitte bitte, kein Access ... es ist keine Datenbank

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung