Vielen Dank, dass Sie sich die Zeit genommen haben, eine Qualitätsfrage zusammenzustellen. Ihre Anforderungen sind groß und Ihre Spezifikationen Ihres Systems sind sehr detailliert. Ich konnte Ihre Spezifikationen in ein Diagrammdatenmodell für Neo4j übersetzen. Siehe unten.
Oben sehen Sie ein ziemlich erklärendes Diagrammdatenmodell. Falls Sie damit nicht vertraut sind, schlage ich vor, Graph Databases zu lesen:http://graphdatabases.com/ -- Auf dieser Website können Sie eine kostenlose digitale PDF-Kopie des Buches erhalten, aber falls Sie eine gedruckte Ausgabe kaufen möchten, finden Sie sie bei Amazon.
Lassen Sie uns das Diagrammmodell im Bild aufschlüsseln. Oben sehen Sie eine Zeitindizierungsstruktur, nämlich (Jahr) -> (Monat) -> (Tag) -> (Stunde), die ich mit Y M D H abgekürzt habe. Die Ellipsen zeigen an, dass das Diagramm fortgesetzt wird, aber aus Platzgründen auf dem Bildschirm habe ich nur eine Untergrafik gezeigt.
Dieser Zeitindex bietet Ihnen die Möglichkeit, Zeitreihen zu generieren oder bestimmte zeitspezifische Fragen zu Ihrem Datenmodell zu stellen. Sehr nützlich.
Der untere Teil des Bildes enthält Ihr Unternehmensdatenmodell für Ihr Casino. Die Knoten stellen Ihre Geschäftsobjekte dar:
- Spiel
- Tabelle
- Mitarbeiter
- Fähigkeit
Das Tolle an Graphdatenbanken ist, dass Sie sich dieses Bild ansehen und die Sprache Ihrer Frage semantisch verstehen können, indem Sie anhand ihrer Beziehungen von einem Knoten zum anderen springen.
Hier ist eine Cypher-Abfrage, mit der Sie Ihre Fragen zum Datenmodell stellen können. Sie können es nur leicht an Ihre Fragen anpassen.
MATCH (employee:Employee)-[:HAS_SKILL]->(skill:Skill),
(employee)<-[:DEALS]-(game:Game)-[:LOCATION]->(table:Table),
(game)-[:BEGINS]->(hour:H)<-[*]-(day:D)<-[*]-(month:M)<-[*]-(year:Y)
WHERE skill.type = "Blackjack" AND
day.day = 17 AND
month.month = 1 AND
year.year = 2014
RETURN employee, skill, game, table
Die obige Abfrage findet das Unterdiagramm für alle Mitarbeiter, die über die Fähigkeit Blackjack verfügen, sowie deren Tisch und Standort an einem bestimmten Datum (17.01.14).
Dies in SQL zu tun, wäre sehr schwierig. Das nächste, woran Sie denken müssen, ist der Import Ihrer Daten in eine Neo4j-Datenbank. Wenn Sie neugierig sind, wie das geht, sehen Sie sich bitte andere Fragen hier auf SO an und wenn Sie weitere Hilfe benötigen, können Sie gerne eine weitere Frage stellen oder mich auf Twitter unter @kennybastani erreichen.
Tschüss,
Kenny