Hierarchical database model
Ich entwerfe eine Kleinanzeigen-Website über Haustiere mit 3 (Haupt-) Anzeigenkategorien:
A- Sale
B- Breeding
C- Jobs
Das Problem besteht darin, dass alle drei Anzeigenkategorien einige Gemeinsamkeiten aufweisen, aber auch einige Unterschiede.
Beispielsweise haben die Kategorien A, B und C Folgendes gemeinsam:
category_id
ad_id
user_id
location
Anzeigen der Kategorie B können jedoch nicht als "Auf der Suche nach / zum Verkauf" eingestuft werden, wohingegen dies bei B & C möglich ist. Darüber hinaus hat jede Kategorie ihre eigenen Unterkategorien. Zum Beispiel hätte Kategorie A eine Adoptionsunterkategorie und eine Verkaufsunterkategorie & Kategorie C hätte eine Jobs-Unterkategorie und eine Services-Unterkategorie.
Sie werden auch einige ungewöhnliche Attribute wie das Gehalt nur in Kategorie C haben.
Ich habe damit begonnen, als Entity-Attribut-Wert-Modell zu arbeiten, habe aber einige Bedenken:
Wird dies die Leistung beeinträchtigen? Weil Benutzer in der Lage sein sollten, anhand einiger eindeutiger Attribute zu suchen. Würde also das Durchsuchen einer großen Tabelle nicht die Leistung beeinträchtigen?
Eines meiner Attribute ist "Animal" (einzigartig für A & B). Zunächst wollte ich eine Animal-Tabelle und eine Breed-Tabelle haben (ähnlich wie Location in einer eigenen Tabelle für Kleinanzeigen-DB-Modelle). Aber ich kann mir nicht vorstellen, wie ich das mit dem Entity-Attribut-Modell machen kann.
Hier ist das Datenbankdesign, das ich mir ausgedacht habe:http: //i.imgur.com/jyV6Cjc.pn
[Aktualisieren
Nachdem ich die Vererbung von Klassentabellen gelesen hatte, schien es besser zu passen als das EAV-Modell, also habe ich meine EER folgendermaßen geändert:http: //i.imgur.com/JWPjt23.pn
Job Ads und Sale Ads können als "Auf der Suche nach / Anbieten" klassifiziert werden, aber es gibt keine großen Unterschiede in den Attributen, wahrscheinlich nur in den Namen (Preis vs. Vorzugspreis zum Beispiel). Glauben Sie also, es wäre notwendig, hier eine weitere Vererbungsebene hinzuzufügen, oder wäre das ein Ärger?
Eine Verkaufsanzeige kann ein Haustier zum Verkauf sein, ein Haustier zur Adoption, das eine Adoption anfordert, das den Kauf eines Haustieres anfordert. Denken Sie, ich sollte diese in zwei Tabellen aufteilen. Annahme und Verkauf? Es würde keinen großen Unterschied in den Attributen geben, wahrscheinlich nur ein anderes Attribut.