Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Model bazy danych dla personelu 24/7 w kasynie

Dziękujemy za poświęcenie czasu na wspólne zadanie jakościowego pytania. Twoje wymagania są świetne, a specyfikacje Twojego systemu są bardzo szczegółowe. Udało mi się przetłumaczyć twoje specyfikacje na model danych wykresu dla Neo4j. Zobacz poniżej.

Powyżej zobaczysz dość objaśniający model danych wykresu. Jeśli nie jesteś zaznajomiony z tym tematem, sugeruję zapoznanie się z Graph Databases:http://graphdatabases.com/ -- Na tej stronie możesz otrzymać bezpłatną cyfrową kopię książki w formacie PDF, ale jeśli chcesz kupić wersję papierową, możesz ją znaleźć na Amazon.

Rozłóżmy model wykresu na obrazku. Na górze zobaczysz strukturę indeksowania czasu, która jest (rok)->(miesiąc)->(dzień)->(godzina), którą skróciłem jako R M D H. Wielokropek wskazuje, że wykres jest kontynuowany, ale ze względu na miejsce na ekranie pokazałem tylko podwykres.

Ten indeks czasu umożliwia generowanie szeregów czasowych lub zadawanie określonych pytań dotyczących modelu danych, które są specyficzne dla czasu. Bardzo przydatne.

Dolna część obrazu zawiera model danych korporacyjnych dla Twojego kasyna. Węzły reprezentują obiekty biznesowe:

  • Gra
  • Stół
  • Pracownik
  • Umiejętności

Wspaniałą cechą grafowych baz danych jest to, że możesz spojrzeć na ten obraz i semantycznie zrozumieć język swojego pytania, przeskakując z jednego węzła do drugiego na podstawie ich relacji.

Oto zapytanie Cypher, którego możesz użyć do zadawania pytań dotyczących modelu danych. Możesz go po prostu nieznacznie dostosować, aby dopasować go do swoich pytań.

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

Powyższe zapytanie znajduje podwykres dla wszystkich pracowników, którzy mają umiejętność Blackjack oraz ich stół i lokalizację w określonym dniu (1/17/14).

Zrobienie tego w SQL byłoby bardzo trudne. Następną rzeczą, o której musisz pomyśleć, jest importowanie danych do bazy danych Neo4j. Jeśli ciekawi Cię, jak to zrobić, spójrz na inne pytania tutaj na SO, a jeśli potrzebujesz dodatkowej pomocy, napisz kolejne pytanie lub skontaktuj się ze mną na Twitterze @kennybastani.

Pozdrawiam,

Kenny




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z prostego dostawcy członkostwa z mysql

  2. Policz wystąpienie w tabeli PHP echo

  3. Zapis MySQL w pliku tekstowym

  4. MYSQL sum() dla różnych wierszy

  5. Odmowa dostępu, gdy kolej łączy się z Mysql