Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 赌场24/7员工名册的数据库模型_Mysql_Sql_Database_Neo4j_Rostering - Fatal编程技术网

Mysql 赌场24/7员工名册的数据库模型

Mysql 赌场24/7员工名册的数据库模型,mysql,sql,database,neo4j,rostering,Mysql,Sql,Database,Neo4j,Rostering,我们目前使用笔/纸名册管理赌场的桌上游戏工作人员。每一行是一名员工,每一列是一个20分钟的时间段,每个单元格表示员工被分配到哪个表,或者他们被分配到了一个休息。员工轮班的开始和结束时间各不相同,他们可以处理的游戏/技能也各不相同。我们需要将名册的副本保存7年,使用纸张这是相当容易的,我想开发一个数字应用程序,但我很难将数据存储在数据库中存档 我对使用数据库相当陌生,我想我了解如何为neo4j这样的图形数据库建模,但在使用时间方面我遇到了困难。我曾尝试学习过像MySQL这样的RDBMS数据库,下面

我们目前使用笔/纸名册管理赌场的桌上游戏工作人员。每一行是一名员工,每一列是一个20分钟的时间段,每个单元格表示员工被分配到哪个表,或者他们被分配到了一个休息。员工轮班的开始和结束时间各不相同,他们可以处理的游戏/技能也各不相同。我们需要将名册的副本保存7年,使用纸张这是相当容易的,我想开发一个数字应用程序,但我很难将数据存储在数据库中存档

我对使用数据库相当陌生,我想我了解如何为neo4j这样的图形数据库建模,但在使用时间方面我遇到了困难。我曾尝试学习过像MySQL这样的RDBMS数据库,下面是我认为应该如何对数据进行建模。请指出,如果我走错了方向,或者如果不同的数据库类型更合适,我们将不胜感激

基础数据
在我们考虑日程安排/时间之前,这里有一些基本数据需要处理

员工
-身份证号码
-名称
-技能(21点、百家乐、轮盘赌等)


-身份证号码
-技能/类型(只能是一项技能)

将花名册数据存储为类似JSON的文件可能更好?那么时间敏感的数据就不会有那么大的问题了。使用数据库进行数字化的好处是查询,这有助于帮助执行耗时的任务,因为在这些任务中,人为错误很常见

可能的查询
注:轮班的员工要么休息,要么在地板上(分配到一张桌子上),技能根据学习难度分为主要技能类型和次要技能类型

  • 哪些员工在地板上呆了80分钟或更长时间?(他们应该休息一下)
  • 我可以根据该员工的技能集将其分配到哪些打开的表
  • 我需要一名拥有百家乐技能但尚未分配到百家乐桌的员工
  • 在此期间,此表上有哪些员工
  • 此时此刻,这位员工在哪里
  • 现在谁在值班
  • 轮班有多少员工可以玩21点
  • 有多少员工拥有3项主要技能
  • 哪些员工拥有至少3个月的百家乐技能
这些查询也可以按字母顺序或时间、技能等进行排序

我很确定,只要我对数据建模正确,我就知道如何使用cypher for neo4j执行这些查询。我对SQL查询不太熟悉,我读过,根据查询和结构的不同,它可能会变得有点复杂

----------------------------------------------------------------------------------------------------

MYSQL特定的 employee表可以包含诸如ID号和名称之类的属性,但对于他们的技能和班次,这些表应该是单独的表,以唯一的整数引用员工(我认为这称为外键?)

另一个表可以存储游戏表,这些表有自己的ID,并使用外键引用技能/游戏类型

要记录像纸笔花名册这样的数据,每天可以有一个表,表中的列从0000开始,值增加20,一直到2340?在时间列之前,我可以为员工设置一个时间列,其中每个员工都用外键表示,然后时间列将有外键指向分配的游戏表,行数据将有许多单元格未填充,因为员工轮班不会是24/7。如果我使用外键引用游戏表,那么当员工休息时,我现在会遇到问题吗?除非我把第一个赌桌条目当作休息

我可能需要进一步复杂化的事情,但随着时间的推移,管理层将尝试不同的游戏桌布局,一些游戏桌可以从说21点转换为百家乐。这种情况在7年内肯定会发生很多次,我是想创建新的游戏表条目还是添加一列以使用外键并引用一个新表来存储一段时间内游戏类型的历史记录?员工还将在职业生涯中学习如何应对新游戏,很少有人会将技能移除

----------------------------------------------------------------------------------------------------

Neo4j特定的 有了这些数据,我会有一个雇员和一个表节点,它们的“isA”关系边缘映射到实际的雇员或表吗? 我想对于这两种类型的技能,我最好使用一个技能节点,并建立这样的关系:21点->isA->技能,员工->Haskill->21点,表->类型->21点

时间
当我想让这个数据库现在使用时间线时,我发现了困难。我遇到了以下关于随时间连接节点的建议:

  • Unix时代似乎是一个常见的建议
  • 是否将节点连接到年/月/日图表
  • Lucene时间表?(我对此不太了解,也不知道如何使用它,我见过一些人提到过它)
还有一些情况与时间和数据的关系有关:

  • 员工每周有不同的工作日和开始/结束时间,这可能是具有属性{shiftStart、shiftEnd、actualStart、actuallend}的轮班节点,员工可能在轮班期间迟到或生病。这是将每个班次与员工联系起来的正确方式吗?员工(节点)->班次(组节点)->班次(节点)

  • 表和工作人员可能会修改技能数据,使用存档数据这可能是一个问题,我认为解决方案是在与技能的关系上具有时间属性

  • 我们每天打开和关闭表格,每个表格每天都有打开/关闭时间,这
    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