Frage

Ich würde mich mit einem Datenbankschema für eine Website von Experten für ein Datenbankschema freuen.

Ich habe ein Datenbankdesign für eine Site von ClassifIffeds Listings, die derzeit in der MyISAM -Engine durchgeführt wird, sodass keine Beziehungen, Schlüssel usw. vorhanden sind.

Bitte schauen Sie sich das ER -Modell für das aktuelle Design an:

enter image description here

enter image description here

Ich muss wissen, ob ich mit dem DB -Design auf dem richtigen Weg bin. Bitte ignorieren Sie dieses Stück, da ich diese Felder aus der Anzeigentabelle entfernen werde)

Es wird erwartet, dass die Website innerhalb weniger Monate nach dem Start mindestens 100.000 Seitenaufrufe pro Tag durchführen kann.

Bitte raten Sie, was Sie über dieses Design denken und was besser gemacht werden könnte.

Bitte raten Sie auch zu der besten DB -Motor, die Sie für eine solche Website verwenden können (InnoDB oder andere ...).

Bitte raten Sie der besten Speicher -Engine für diese Datenbank, die die Leistung, die Last, die DB -Integrität (falls erforderlich, da sie derzeit auf MyISAM -Engine und damit keine DB -Integrität entwickelt hat) und was auch immer für eine solche Website zu berücksichtigen ist .

Ich weiß, dass spezifische Datenbankprobleme/Probleme nur dann behandelt werden können, wenn sie in der Realität auftreten, aber zumindest möchte ich in die richtige Richtung beginnen.

Vielen Dank im Voraus für all Ihre Hilfe.

War es hilfreich?

Lösung

  1. Warum oh warum würdest du myisam benutzen? Nach dem, was ich sehe, sprechen Sie nicht über eine Hochleistungs -Website. Warum sollten Sie sie also verwenden ??? Gehen Sie mit InnoDB.

  2. Die Datenintegrität ist keine Option. Wenn Sie also kein Experte sind, haben Sie wahrscheinlich nicht darüber nachgedacht, Logik dafür in Ihrer Anwendung zu implementieren, sodass Sie wirklich in Betracht ziehen sollten, FK zu verwenden.

  3. Wenn Sie nur Ihr ER -Modell betrachten (was nicht einmal ein ERM ist, da Sie keine Beziehungen definiert haben, gibt es kein R, es ist eher ein EM), können wir nicht so viel sagen. Wir brauchen eine Geschichte und die Geschichte scheint groß zu sein.

  4. 100K -Hits pro Tag sind Erdnüsse und in diesem Fall irreführend. Was ist die höchste erwartete Rate pro Sekunde? Wie lange muss es möglich sein, dieses Niveau aufrechtzuerhalten?

  5. In diesem Modell fehlt auch die Datentypen. Diese sind für minimale Analysen nicht optional.

  6. So etwas dauert normalerweise Tage, um zu diskutieren und zu analysieren. Ich finde es hier ein bisschen über den Rand, insbesondere angesichts der Informationsknappheit.

Andere Tipps

Auf einen Blick . . .

In Ihrem Diagramm können wir keine Primärschlüssel, einzigartige Einschränkungen oder ähnliches sehen. Ihre Abwesenheit ist beunruhigend.

Fast jede Tabelle hat eine ID -Nummer. Einige von ihnen werden nur als "ID" bezeichnet, andere haben einen beschreibenderen Namen. Beschreibender ist das Bessere dieser beiden Ideen.

Eine ID -Nummer in einer Tabelle mit keinen anderen eindeutigen Einschränkungen ist normalerweise ein Fehler. (Normalerweise, aber nicht immer.) Zum Beispiel braucht die Tabelle "Katzen" wahrscheinlich eine einzigartige Einschränkung für "Catname". Andernfalls identifiziert die ID -Nummer nur eine Zeile, keine Katze. (Und das bedeutet, dass Sie zwei oder mehr Zeilen mit demselben "Catname" haben können.)

Die Tabellen ADXFields und SubcatxFields sehen aus wie eine Katastrophe, die auf Gelegenheit wartet. Die Tabelle 'SubcatxFields' sieht aus wie eine Art EAV-Anti-Muster. Schauen Sie sich genau an Bill Karwins Diashow über Datenbank-Anti-Muster Bevor Sie diese Straße hinuntergehen. (EAV startet auf Folie 16.)

Die Subcat -Preisgestaltung sollte wahrscheinlich in eine separate Tabelle verschoben werden.

Dort ist ein Internationaler Standard für Ländercodes. Sie sind besser dran, die Standard -Ländercodes anstelle Ihrer eigenen ID -Nummer zu verwenden. Wenn Sie einen menschlich-lesbaren Code verwenden, können Sie normalerweise einen Join eliminieren. (Normalerweise, aber nicht immer.)

Die Tabelle "Städte" verfügt nicht über genügend Spalten, um eine Stadt zu identifizieren. (In den USA gibt es viele Städte mit dem Namen "Washington".)

Das ist genug Zeit. . .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top