Hi,
1.) Es ist absolut richtig, sich vor Beginn der eigentlichen Arbeit Gedanken zur Struktur der Datenbank und zum Ablauf des geplanten Programms zu machen. Du wirst bald merken, dass die Datenbanktheorie (denn das sind Deine Vorgedanken zur Datenbankstrukturierung) und Programmierlogik (Stichwort Struktogramme …) den eigentlichen Teil der Arbeit ausmachen. Das Ganze in eine Sprache zu fassen (bei Dir wohl PHP) ist dann der Abschluss des Projekts. Du sparst Dir sehr viele Sackgassen, wenn Du diese Vorarbeiten gründlich machst und am Besten zu Papier bringst.
2.) Deine Fragestellung zeigt, dass Du vom Thema überhaupt keine Ahnung hast. Tut mir leid, es so deutlich sagen zu müssen.
Mein Tipp: Kauf Dir ein Fachbuch zum Thema. Ich verwende zur Zeit als Referenz „PHP5 & MySQL5 - Von den Grundlagen zur professionellen Programmierung“ von Stefan Reimers und Gunnar Thieß, erschienen bei Galileo Computing. ISBN 3-89842-693-9 Buch anschauen.
Mir geht’s nicht mal primär um das, ich nenn es mal „Vokabeln pauken“ in SQL und PHP, mir geht es wirklich um das Grundverständnis der Thematik. Was sind Objekte und deren Eigenschaften, was Beziehungen zwischen Daten und wie wirken sie, was ist referenzielle Integrität? Welche Sicherheitskonzepte sind für Deinen Shop sinnvoll und wie sollen sie wirken?
Ich glaube nicht, dass wir Dir das alles, was Du zum Programmieren eines kleinen Webshops wissen musst, hier erklären können. Außerdem wird das ständige Scheitern für Dich auf Dauer so deprimierend werden, dass Du das Projekt fallen lassen wirst. Glaub mir. Ich schreib das nicht, weil ich Dich irgendwie anmachen will. Ich spreche aus Erfahrung.
Jetzt will ich noch auf Deine Frage eingehen: erster Teil: allgemein Ja, bitte sieh Dir die sogenannten „Normalisierungsstufen“ für Datenbanken an. Dort geht es um Integrität und Vermeidung von Redundanz bei Datensätzen. Ggf. googlen.
Zweiter Teil Deiner Frage: Es geht sowohl so als auch so. Es ist eine Frage des Handlings. Im allgemeinen werden in einer MySQL-Abfrage alle Daten geholt, die eine oder mehrere Bedingungen gemeinsam erfüllen (z.Bsp. alle Artikel eines Verkäufers) Diese Ergebnismenge wird in ein php-Array geladen (meistens mit mysql_fetch_array()) und dann dort sortiert, durchsucht, satzweise ausgegeben usw.
Deine Grundüberlegung, den MySQL-Server also nicht mit aus Programmschleifen generierten endlosen Attacken zu malträtieren, ist richtig. Erstens quälst Du damit sinnlos die Maschinen und das ggf. das Netz und zweitens verlangsamt das die Ausführung Deiner Skripte.
Zum Abschluss: Ich würde mich freuen, wenn Du meinen Tipp annimmst und Dich erstmal intensiv in das Thema reinarbeitest. Ich denke, wir alle hier würden Dich gern bei Detailfragen unterstützen. Sollte Dir das alles aber zu mühevoll sein, empfehle ich Dir, Dir mal fertige Systeme anzuschauen. Da gibt es auch einiges Kostenloses im Netz, z. Bsp. Shopsysteme auf Basis von Joomla oder Typo 3 usw.
Grüße Micha