2017-12-29 4 views
0

Hallo,Datenbank-Design, speichert über 10 Bilder Pfade in einem einzigen Feld

My Original Design:

create table product (
product_id 
... ... 
); 

create table image (
image_id, 
path, 
product_id 
... ... 
); 

aber mein Kollege eine einzige Tabelle genug

ist denkt, dass die Schaffung
create table product (
product_id, 
images_paths, 
... ... 
); 

imag es_paths speichert daher mehrere Bilderpfade. Zum Beispiel 01.jpg, 02.jpg, 03.jpg ... ...

Welcher Weg ist besser?

+1

SQL hat Datenstrukturen * entworfen * zum Speichern mehrerer Werte (Tabellen) und Werkzeuge zum * Optimieren * des Zugriffs auf die Werte in diesen Datenstrukturen (Indizes). Warum also sollte jemand * diese * ignorieren und alles in einer Zeichenkette speichern, ein Datentyp * nicht * speziell zum Speichern mehrerer Werte. –

+1

Lassen Sie Ihren Kollegen nicht in der Nähe von Datenbanken oder Software-Entwicklung im Allgemeinen – MatBailie

Antwort

1

Die einzelne Tabelle ist wahrscheinlich die schlechteste Option. Der Grund dafür ist, dass es nicht normalisierte Daten darstellt. Im Single-Table-Design speichern Sie mehrere Datenpunkte in einer einzelnen Spalte. Dies würde es schwierig machen, Bildpfade in einer Abfrage einzeln aufzuteilen.

Die beiden Tabellen Ansatz ist auf dem richtigen Weg, aber die richtige Lösung hier könnte tatsächlich ein drei Tabelle Ansatz:

product (product_id, ...) 
image (image_id, path, ...) 
product_image (product_id, image_id) 

Die product Tisch im Wesentlichen bleibt wie es ist. Die image Tabelle wurde überarbeitet, so dass jede Zeile nur ein einzelnes Bild und seinen Pfad aufzeichnet. Neu im Schema ist eine Kreuzung Tabelle product_image, die verfolgt, welche Bilder mit welchen Produkten verbunden sind.

Dieser Ansatz minimiert die Duplizierung von Daten, und bei richtiger Indexeinrichtung sollten die Joins relativ gut funktionieren.

+2

Sicher hängt die Entscheidung über zwei/drei Tabellen sehr davon ab, ob Bilder für Produkte oder geteilt sind, Informationen, die uns nicht in der OP-Frage zur Verfügung gestellt werden. –

+0

@Damien_The_Unbeliever Einverstanden. Ich stimme immer noch aus den von mir angegebenen Gründen gegen die One-Table-Lösung. Ich kann mir gut vorstellen, dass ein Bild über mehrere Produkte hinweg geteilt wird. –

+0

@Tim Biegeleisen Danke – Rick

Verwandte Themen