Mailinglisten-Archive |
> from: "Arash Yalpani", subject: "Wie speichert man Attribute? war: Where-Klausel m" > Manche hat jeder Benutzer, manche davon nur bestimmte. > Man muß nach Eigenschaften filtern können und es muss möglich sein, über > eine Browser-GUI einfach neue Felder hinzuzufügen. > > Wie organisiert man so etwas Die schnelle Antwort: Es gibt eine Tabelle Attribute, dessen Datensätze über den Fremdschlüssel der Tabelle Benutzer einem Benutzer zugeordnet werden können. Jedes Attribut hat zwei Felder: Name und Wert. Nachteil: Der eine Benutzer schreibt "Name", der andere aber "Vorname" ins Feld Name. Wie soll man da suchen? Die kompliziertere Antwort: Das Feld Name der Tabelle Attribute wird ersetzt durch einen Fremdschlüssel auf die Tabelle Attributtyp. Der Benutzer kann dann beliebeige Attribute aus der Liste der Attributtypen aus- wählen. Läßt sich schön durchsuchen. Die perfektionistische Antwort: Mehrere Attribute werden zu einem Attributset zusammengefaßt. Beim Benutzer wird dann hinterlegt, welche Sets er hat. Somit kann der Benutzer sich ein Set auswählen und hat dann gleich mehrere Attribute bekommen. Die extreme Variante: Für jedes Attributset kann dann eine eigene Formularmaske hinter- legt werden. Die reduzierte Variante: Die Attribute werden nicht einzeln gespeichert, sondern für jedes Attributset gibt es eine Tabelle mit den Attributen als ein Datensatz. Macht einiges einfacher, erfordert aber mehr Tabellen. Das Hinzufügen von neuen Attributsets erforgert dann immer eine neue Tabelle und entsprechende INSERT/UPDATE-Befehle (da läßt sich aber ein dynamischer Statement-Generator bauen) Schön, nicht? Stay cool, don't close the fridge P.Bierans --- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive