Erledigt: Datenbank konzipieren

 


honsey
Gast

23.01.09
15:26 Uhr
Wir arbeiten an der FH gerade an einem Tool, mit dem man Trends im Produktdesign der letzten Jahre visualisieren kann. Das ganze soll eine von Studenten gefüttere Bilddatenbank werden. Die Bilder sind allerdings auch recht komplex getaggt/kategorisiert/eingeordnet - what ever.

Das sind sehr unterschiedliche Eigenschaften, die da bestimmt werden müssen. Farbigkeit - dort kann man mehrere Sachen auswählen. Komplex wird es aber bei sachen wie der Form: Die ist dann z.B. „eher organisch“ (was dann z.B. „rechtwinklig/orhogonal“ ausschliesst) UND „neu“ statt „bekannt“ UND ganz vielen anderen Abhänigkeiten.

Hier ist ein sehr früher Mock-Up http://topotropic.de/superstyle/intern_u...oad03.html

Jetzt möchte ich einen Prototypen mit PHP/MYSQL bauen und weiss aber nicht so recht, wie man am besten bei so etwas vorgeht.

Meine aktuelle Strategie wäre: 2 Tabellen, BILDER, CHARAKTERISTIK

BILDER: uploadedimage, dateuploaded, designer, year, characterid
CHARAKTERISTIK: id, eckig, rund, organisch, orthogonal, weiss, schwarz, blau, grün, gelb...

ich ziele darauf ab, dass ich später eben auch nochmal etwas ergänzen kann, was dann im Upload-Formular UND in der Visualisierung geändert wird, habe aber das ungute Gefühl, dass das der falsche Ansatz ist und will es nicht ausprobieren, weil alleine das Erstellen der CHARAKTERISTIK-Tabelle Stunden dauern wird.

Danke schonmal & Schöne Grüße,
Hans
Link zu diesem Beitrag in die Zwischenablage kopieren
Mister Ad
Werbung
Schon mal bei Zalando, Amazon oder eBay geguckt? Vielleicht wirst du dort fündig.

 
kasn
Gast

23.01.09
15:34 Uhr
die Verknuepfung soll n zu n sein? Also ein Bild kann beliebig viele Charakteristiken haben und eine Charakteristik kann beliebig vielen Bildern zugeordnet sein?

dann muss man noch eine Zwischentabelle einziehen „BildCharakteristik“ die eine Bild und eine Charakteristiken-Id enthaelt. Dann ist Zuweisung schonmal klar.

Dann wuerde ich noch eine Tabelle mit den Charakteristikentypen anlegen. Form, Farbe, Zeug. Diese Gruppen haben einen Namen und einen „Schalter“ der festlegt ob eine Charakteristik exklusiv ist, also nur eine aus der Kategorie vergeben werden darf.

Also 4 Tabellen

BILDER
- bildid
- uploadedimage,
- dateuploaded,
- designer,
- year

CHARAKTERISTIK
- charid
- name
- chargroupid

CHARGROUP
- chargroupid
- name
- exklusiv

BILDCHARAKTERISTIK
- bildid
- charid
Link zu diesem Beitrag in die Zwischenablage kopieren
honsey
Gast

25.01.09
00:09 Uhr
Danke kasn. Ich glaube ich habs fast verstanden. Eine kleine Sache ist mir noch unklar:

In der Tabelle BILDCHARAKTERISTIK – muss ich dort dann die zutreffenden Eigenschaften des Bilds einfach als String eintragen, mit den entsprechenden charids – getrennt durch z.B. ein Semikolon?

Also ungefähr so:
bildid = 1
charid = 2; 4; 13; 32; 44;

oder ist es noch besser die CHARAKTERISTIK Tabelle so anzulegen, dass die einzelnen Eigenschaften Spalten (Boolean?) sind und ich bei charid dann die entsprechende Zeile eintrage? Das fühlt sich für mich als Laie richtiger an, riecht aber auch nach Ärger und ist vielleicht weniger flexibel?

Danke dir auf jedenfall vielmals - schon jetzt sehr viel Übersichtlicher!
Link zu diesem Beitrag in die Zwischenablage kopieren
phloo
Veteran

25.01.09
00:50 Uhr
für jede charid ein Eintrag meinte er wohl.
Link zu diesem Beitrag in die Zwischenablage kopieren
Rusty
Veteran

25.01.09
14:13 Uhr
Für mich als Laien, der in seiner Laienhaftigkeit immer versucht, möglichst wenige Tabellen zu verwenden, stellt sich die Frage, ob es irgendeinen Vorteil birgt, stattdessen möglichst viele Tabellen zu verwenden.

Ist das dann performanter, oder sowas?
Link zu diesem Beitrag in die Zwischenablage kopieren
dito
Veteran

25.01.09
14:55 Uhr
Irrelevanter Beitrag (anzeigen):

Link zu diesem Beitrag in die Zwischenablage kopieren
kasn
Gast

25.01.09
15:57 Uhr
honsey schrieb am 25.01.09, 00:09 Uhr:

In der Tabelle BILDCHARAKTERISTIK – muss ich dort dann die zutreffenden Eigenschaften des Bilds einfach als String eintragen, mit den entsprechenden charids – getrennt durch z.B. ein Semikolon?

Also ungefähr so:
bildid = 1
charid = 2; 4; 13; 32; 44;
bildid = 1
charid = 2
bildid = 1
charid = 4
bildid = 1
charid = 13
bildid = 1
charid = 32
bildid = 1
charid = 44

also pro Zuordnung hast du dort eine Datensatz.

Rusty: im konkreten Fall waere das durchaus schneller. Bei einer Suchen nach allen Bildern mit einer gewissen Charakteristik muss man nur eine Integersuche auf eine recht einfache Tabelle machen. (SELECT * FROM BILDCHARAKTERISTIK WHERE charid = x) Wenn die Charakteristiken aber kommagrennt gespeichert werden muss eine relativ teure Stringsuche verwendet werden. (SELECT * FROM BILDER WHERE CHARAKTERISTIK like '%,n,%')
Link zu diesem Beitrag in die Zwischenablage kopieren
honsey
Gast

26.01.09
02:00 Uhr
juhuu - ich habs verstanden!

viele tabellen. gut hörthört
viele zeilen in tabellen. noch besser hörthört

vielen dank kasn!
Link zu diesem Beitrag in die Zwischenablage kopieren
 
#