Portal > Foren > PHP > PHP-Programmierung > Projektbesprechung, brauche Eure Meinung
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 16.05.2006, 17:07 Nach oben    #1
Benutzer
 
Registriert seit: 03.03.2006
Beiträge: 31
Standard Projektbesprechung, brauche Eure Meinung

Hallo,

ich komme grad in meiner Überlegung nicht weiter und wollte mal die Meinung eines anderen hören.

Also es geht um folgendes:

Für ein mehrsprachiges Portal habe ich mir so eine Art Formular-Generator geschrieben, mit dessen Hilfe ich mir einzelne Formular Element erstellen kann.



Diese Werte speichere ich dann so ab:





featureID = autoincrement
categoryID = Kategorie
sort = position zum auf- und ab sortieren
type = kennzeichnung ob text feld, radio, checkbox, etc
require = pflichtfeld ja/nein
transrequire = Übersetzung notwendig ja/nein

Die Beschriftungen speichere ich in einer anderen Tabelle:







Lang_id steht für die jeweilige Sprache. Es können beliebig viele Sprachen im System existieren.



Soweit – so gut.

Wo ich jetzt echt festsitze ist, wie ich die Elemente (features) nun für weitere Kategorien speichere.
Ich könnte natürlich in der ersten Tabelle einfache alle Zeilen mit einer neuen categoryID wiederholen… aber das erscheint mir igendwie doof und unnötig, zumal ich dadurch gezwungen bin, auch die Werte in der zweiten Tabelle zigmale zu wiederholen.

Andererseits, nicht jede Kategorie hat dieselben Felder. Eine andere Kategorie könnte weniger/mehr/andere Elemente besitzen.

Und hier stecke ich fest… weiß nicht, wie ich es am besten und unkompliziertesten löse, so das mir meine Dynamic dabei nicht verloren geht.



Welchen Eindruck macht das ganze auf Euch?
Hattes Ihr mal ähnliche Probleme? Wie würdet Ihr nun weitermachen?



Bin sehr neugierig auf Eure Antworten!


heohni ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.05.2006, 09:38 Nach oben    #2
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

Also erstmal muss ich loswerden, dass du für das Feld `type` lieber den Typ ENUM nutzen solltest. Da gibst du dann die Werte entsprechend vor ('TEXT', 'PASSWORD' und wie sie alle heißen) und kannst dann direkt auf den tatsächlichen Namen in der DB zugreifen. Das ist deutlich übersichtlicher, als eine Zahl, mit der man erstmal so nichts anfangen kann, außer zu raten, welcher Feld-Typ es sein sollte.
Falls du jetzt Bedenken hast, es würde mehr Speicherplatz verbrauchen: Falsch. Letztlich speichert SQL den Zahlenindex der angegebenen Werte und verbraucht nur ein einziges Mal mehr Platz, als deine Lösung. Der Vorteil liegt aber klar auf der Hand

Dann zu deiner Problematik: Sie ist garnicht so trivial, wie du vielleicht vermutest. Was du brauchst ist einfach nur eine Verknüpfung der Tabellen im Stil der Normalform. Was heißt das genau? Das beschreibe ich dir mal eben so kurz ich kann (sorry, wenn es etwas länger wird

Du hast aktuell 2 Tabellen, undzwar einmal die wo die Kategorien drinstehen und eine mit den Features. Um jetzt beliebig viele Features mit beliebig vielen Kategorien zu verbinden erstellst du einfach eine 3. Tabelle!
Du kannst also die `categoryID` aus deiner Features-Tabelle löschen.

Die 3. Tabelle hat dann nur 2 Felder undzwar eins für die UID des Features und eine UID für die Kategorie. Über beide Felder einfach den Primary-Key gelegt und du hast auch keine doppelten Einträge. Die Abfrage ist dann natürlich etwas komplizierter, aber so hast du die Möglichkeit ein Feature keiner, einer oder vielen/allen Kategorie(n) zuzuordnen und umgekehrt. Man nennt das auch eine n:m (sprich: n zu m) Verknüpfung.

Ich hoffe, dass ich dir weiterhelfen konnte!?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.05.2006, 10:18 Nach oben    #3
Benutzer
 
Registriert seit: 03.03.2006
Beiträge: 31
Standard

Uff, ja.... gut, lass ich mir mal durch den Kopf gehen
heohni ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.05.2006, 10:38 Nach oben    #4
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

Wenn du etwas näher umschrieben brauchst, sag es einfach, ich versuche es dann zu beantworten.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.05.2006, 12:23 Nach oben    #5
Erfahrener Benutzer
 
Benutzerbild von Prophet
 
Registriert seit: 10.05.2006
Ort: Jevenstedt
Beiträge: 131
Standard

Wenn ich dich richtig verstanden habe sind die Daten der dritten Tabelle doch vollkommen redundant, oder?
__________________
Prophet ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.05.2006, 13:24 Nach oben    #6
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

Zitat:
Zitat von Prophet
Wenn ich dich richtig verstanden habe sind die Daten der dritten Tabelle doch vollkommen redundant, oder?
Das kann garnicht möglich sein, weil ich schrieb, dass die beiden Felder als Primary-Key gesetzt werden sollen, wodurch dann jede Kombination nur ein einziges mal möglich ist. Es würde auch keinen Sinn machen, eine Kombination 2 mal anzulegen. Oder habe ich deine Aussage jetzt falsch verstanden?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.05.2006, 18:42 Nach oben    #7
Erfahrener Benutzer
 
Benutzerbild von Prophet
 
Registriert seit: 10.05.2006
Ort: Jevenstedt
Beiträge: 131
Standard

Ich glaube ich missverstehe den Sinn deiner dritten Tabelle...
__________________
Prophet ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.05.2006, 19:21 Nach oben    #8
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

Die 3. Tabelle verknüpft lediglich die anderen 2 Tabellen miteinander, indem es pro Datensatz die UID der einen und die UID der anderen Tabelle beinhaltet. Mehr steht in der Tabelle nicht.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Brauche Hilfe auf dem Handy/Telefon-Tarif-Markt Ben Plauderecke 5 20.11.2006 16:50
Brauche Hilfe und Vorschläge bei der Chat-Grundkonzeption Chr!s PHP-Programmierung 26 14.08.2006 15:45
Brauche hilfe bei einer SQL Abfrage philstrike Datenbanken 18 07.07.2006 09:15
brauche hilfe gymli99 PHP-Programmierung 3 20.03.2006 20:02
Was brauche ich, um mit Java zu programmieren? janis Allgemeine Java-Programmierung 16 08.05.2005 18:10


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45