php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 14-07-2009, 17:36
plastikbaum
 Registrierter Benutzer
Links : Onlinestatus : plastikbaum ist offline
Registriert seit: Aug 2005
Beiträge: 66
plastikbaum ist zur Zeit noch ein unbeschriebenes Blatt
Question Datenbankmodellierung

Hallo,

seit ein paar Tagen überlege ich hin und her, wie ich eine Datenbank modellieren soll und kann mich nicht wirklich entscheiden. Vielleicht könnt Ihr mir ja auf die Sprünge helfen :)

Ziel:

In einer Datenbank sollen Objekte gespeichert werden, die gewisse Eigenschaften haben (oder nicht haben). Diese Eigenschaften kommen aus einem Eigenschaften-Pool, der für alle Objekte identisch ist. Folglich kann das Objekt O1 z. B. die Eigenschaften E1, E2, E5 und E7 haben, das Objekt O2 bspw. die Eigenschaften E94, E1 und E286.

Ich sehe nun drei Möglichkeiten:

1. Für jede mögliche Eigenschaft ein Feld in der Objekt-Tabelle.
2. Eine eigene Tabelle für die Objekt-Eigenschaften, die nur aus dem Objekt-PK und dem Eigenschaften-PK besteht, beides zusammen als PK.
3. Ein Feld in der Objekt-Tabelle, in dem alle zutreffenden Eigenschaften bzw. deren IDs oder Schlüssel gespeichert werden, z. B. durch Kommata getrennt.

Für Punkt 1 spricht vermutlich, dass Abfragen schneller sind als bei den Möglichkeiten 2 und 3. Dagegen spricht wohl, dass bei neuen Eigenschaften die Datenbank modifiziert werden muss und wohl auch die Skripte (1 bis 2 Eigenschaften / Monat)

Bei der Möglichkeit 2 sind keinerlei Modifikationen an der DB nötig, wenn neue Eigenschaften hinzukommen oder alte wegfallen. Jedoch vermute ich, dass die Joins wesentlich langsamer sein werden, wenn die Datenmenge hoch genug ist (s. u.)

Möglichkeit 3 schließlich ist auch äußerst flexibel, doch auch hier werden insbsondere die SELECT-Abfragen eher zeitfressend.

Datenmenge:

Die Anzahl der Objekte wird im Schnitt irgendwo grob bei 100.000 liegen.
Die Anzahl der möglichen Eigenschaften bewegt sich bei ca. 100.
Jedes Objekt wird vermutlich an die 40 - 50 dieser Eigenschaften haben, manche auch mehr, manche viel weniger.

Datenbanknutzung:

Etwa 95 - 98 % der Datenbankzugriffe (bezogen auf die Objekte) werden aus SELECT-Abfragen bestehen, und zwar solchen, bei denen Objekte gefiltert werden, die bestimmte Eigenschaften haben (und auch weiteren Kriterien entsprechen) einerseits und andererseits solchen, die Kriteriums-abhängige Objekte filtern und deren Eigenschaften ermitteln.
1. Zeige mir alle Objekte, die die Eigenschaften E7, E90 und E234 haben;
2. Zeige mir alle Eigenschaften von Objekt O7;


Und nun?

Wie entscheidet man sich hier? Gibt es hierzu empfehlenswerte Vorgehensweisen, Praxiserfahrungen oder "Design Patterns", die sich (samt Empfehlung) anwenden lassen?

Schon mal vielen Dank ;)

pb
Mit Zitat antworten
  #2 (permalink)  
Alt 15-07-2009, 10:20
marc75
 PHP Senior
Links : Onlinestatus : marc75 ist offline
Registriert seit: Jul 2003
Ort: daheim
Beiträge: 1.366
marc75 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nr. 2 ganz klar, du schreibst ja selbst, es gibt für jedes Objekt mehrere Eigenschaften und es können irgendwann auch neue hinzukommen. Das auslesen der Datensätze ist gar nicht mal so langsam.
__________________
mfg
marc75

<Platz für anderes>
Mit Zitat antworten
  #3 (permalink)  
Alt 15-07-2009, 12:10
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

dito ... Es kann nur Nummer 2 sein.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Programm zur Datenbankmodellierung Big Chief Apps und PHP Script Gesuche 4 26-03-2004 12:14

Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:48 Uhr.