sql >> Base de Datos >  >> RDS >> Mysql

Modelo de base de datos para una lista de personal 24/7 en un casino

Gracias por dedicar tiempo a formular una pregunta de calidad. Sus requisitos son excelentes y las especificaciones de su sistema son muy detalladas. Pude traducir sus especificaciones en un modelo de datos gráficos para Neo4j. Ver más abajo.

Arriba verá un modelo de datos gráfico bastante explicativo. En caso de que no esté familiarizado con esto, le sugiero que lea Graph Databases:http://graphdatabases.com/ -- En este sitio web puede obtener una copia digital gratuita en PDF del libro, pero en caso de que quiera comprar una copia impresa, puede encontrarla en Amazon.

Analicemos el modelo gráfico en la imagen. En la parte superior verá una estructura de indexación de tiempo que es (Año)->(Mes)->(Día)->(Hora), que he abreviado como Y M D H. Los puntos suspensivos indican que el gráfico continúa, pero por motivos de espacio en la pantalla, solo he mostrado un subgráfico.

Este índice de tiempo le brinda una forma de generar series de tiempo o hacer ciertas preguntas sobre su modelo de datos que son específicas del tiempo. Muy útil.

La parte inferior de la imagen contiene el modelo de datos de su empresa para su casino. Los nodos representan sus objetos comerciales:

  • Juego
  • Mesa
  • Empleado
  • Habilidad

Lo bueno de las bases de datos de gráficos es que puede mirar esta imagen y comprender semánticamente el lenguaje de su pregunta saltando de un nodo a otro por sus relaciones.

Aquí hay una consulta de Cypher que puede usar para hacer sus preguntas sobre el modelo de datos. Puede modificarlo ligeramente para que coincida con sus preguntas.

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

La consulta anterior encuentra el subgráfico de todos los empleados que tienen la habilidad Blackjack y su mesa y ubicación en una fecha específica (17/01/14).

Hacer esto en SQL sería muy difícil. Lo siguiente en lo que debe pensar es en importar sus datos a una base de datos Neo4j. Si tiene curiosidad sobre cómo hacerlo, consulte otras preguntas aquí en SO y, si necesita más ayuda, no dude en publicar otra pregunta o comunicarse conmigo en Twitter @kennybastani.

Saludos,

Kenny