标签: data-modeling

如何建模复杂数据

我必须创建一个模型,在几个平台上存储游戏的游戏控制.我找不到合适的方法.

  1. 控制器按钮在不同的系统上是不同的(Wii,Xbox 360,PS3都有自己特定的控制器按钮.)
  2. 有些游戏实际上是几个游戏打包成一个游戏; 这意味着单个产品可以根据正在播放的游戏进行多项控制.
  3. 许多游戏的游戏控制根据您的游戏内活动(驾驶/步行/飞行等等)而变化
  4. 仅仅存储按钮功能是不够的,因为大多数游戏都有几个需要组合按钮的特殊动作.

你会如何解决这个问题?老实说,我不知道从哪里开始!

更新:非常感谢大家的深思熟虑,非常有帮助的意见.我还没有选择和回答,因为最终决定这个功能不值得付出努力.非常感谢再次.

sql database-design data-modeling

9
推荐指数
1
解决办法
429
查看次数

如何在数据库表中保持记录的顺序

我正在创建一个数据库表,该表将存储最终将显示在网页上的菜单链接.

我的问题是我想控制菜单项的顺序.我可以有一个名为order的字段,但每次我有一个新的菜单链接我都必须插入订单并将所有更高顺序的记录更改为+1.

例如,假设我想要链接(按此顺序):

Home  
About  
Products  
Shopping  

我可以有一个名为MenuLinks的表,并有列:Name,Order

我的数据看起来像这样:

Name      Order  
Home      1  
About     2  
Products  3  
Shopping  4  

但如果我现在想添加一个名为ContactUs的新链接,但我想在家里出现.

任何人都可以想到一种更好的方法来存储需要在数据库表中排序的列表,而无需这种繁琐的维护工作.

sql database database-design data-modeling

9
推荐指数
3
解决办法
6283
查看次数

如何在Google的数据存储区中对实体进行建模

与关系数据库引擎不同,Google App Engine使用的数据存储区不强制执行模式 - 而不是行和列,它存储具有各种属性的实体.不过,还应该使用传统的数据库设计吗?

例如,假设我有一个跟踪各种租赁车辆的应用程序.在传统的数据库中,我可能有一个Buses表格,它跟踪车队中每辆公交车的座位长度和数量,并且每列车Trucks的负载能力和马力都有一列.每辆公共汽车和卡车也有颜色和车牌号码.(如果我想规范化数据库,我可以在Vehicle表中分解这些属性).

在Google的数据存储区中,我很想将公交车和卡车存储为Vehicle实体,因为它们共享共同的属性,并添加特定于车辆类型的任何属性.

使用传统数据库模型有哪些优点/缺点,其中每个数据存储区实体代表一个数据库表?

将大型实体分解为更小的实体会更有效吗?

编辑:

此外,有关使用哪种API的任何建议:JDO,JPA或数据存储区低级API?

谢谢!

google-app-engine database-design data-modeling google-cloud-datastore

9
推荐指数
1
解决办法
2680
查看次数

9
推荐指数
2
解决办法
2万
查看次数

当人们有多个工作岗位时,使用人员,职位和团队为组织建模的最佳方法是什么?

我有一个有趣的建模问题.我正在尝试在网站上生成组织结构图(后端是C#/ SQL服务器,前端是javascript/google orgchart API,但建模问题的关键是更通用,所以我没有包含任何特定的技术下面的标签,因为问题不是任何技术特定问题.

我有以下4个数据库表:

  1. 团队 - 其中包含字段Id,Name,ParentTeamId(这是同一个表中的另一行)
  2. 职位 - 代表团队中的职位.字段是Id,TeamId,IsTeamHead等
  3. Person - 代表一个人(此表中没有与任何其他表的链接).字段是Id,FirstName,LastName等
  4. PersonPosition - 表示位置中的人(这将桥接两个表)字段是Id,PersonId,PositionId,StartDate,EndDate

当我有一个简单的vanilla org图表时,这非常有效,因为我基本上遍历每个团队(因为每个团队都有其ParentTeamId)并建立一个团队层次结构并显示该团队中的位置(使用TeamId字段)"Ishead"= true并将与该位置相关联的人显示为头部.

我的问题是(并非如此罕见),现在有人承担了多重责任 - 他们基本上有两个不同的工作.以前,乔是市场营销负责人,比尔是区域主管,但乔离开了

在营销负责人和区域主管之前,这是两个不同的(2个不同的职位)所以比尔是营销主管,但也是美国的区域经理.我试图找出建模和可视化的正确方法.

建模问题的第一部分是决定我是否应该将其建模为两个不同的位置.如果我这样做,我可以在这个PersonPosition表中有多个条目(两个都有相同的PersonId),但问题是我觉得我在计算位数.

此外,从可视化的角度来看,同一个人会出现在两个地方.也许这从功能的角度来看是正确的,但似乎奇怪的是你会多次列出同一个人(也许它不是那么奇怪,但想得到反馈,人们在这种情况下看到的是预期的可视化和什么似乎可以接受也许应该推动建模)

有什么建议"正确"的方式来做到这一点?

database-design modeling data-modeling orgchart

9
推荐指数
2
解决办法
6984
查看次数

如何在Neo4j中使用类型层次结构?

有没有办法在Neo4j中建模类型层次结构?例如,如果我想构建一个汽车的类层次结构,我可能有一个基本类型"汽车",然后有扩展它的子类,如"SportCar"等.

我希望能够创建"SportCar"的实例,但运行查询以获取所有"Car".这可能吗?如果是这样,技术是什么?

我认为我要做的是创建一个"标签层次结构" - 但我不认为neo4j支持.

polymorphism inheritance graph data-modeling neo4j

9
推荐指数
2
解决办法
4341
查看次数

将复杂的嵌套SQL关联转换为可管理服务的前端数据建模最佳实践是什么?

我正在寻求解决这个问题的可能解决方案.我将使用Angular和Rails,但实际上这个问题有点抽象,不需要在这些框架的上下文中回答.

在前端管理复杂嵌套SQL关联的最佳实践是什么?

假设您有帖子,评论和评论嵌套在帖子下.您将帖子作为JSON发送到前端,并在其下嵌套注释.现在你可以在每个帖子下面列出它们了,很棒.但随后出现了问题:

  1. 如果您还想显示最近的评论怎么办?您的评论服务需要在规范化集合中进行评论,或者以允许按日期排序的方式访问它们.

    • 这是否意味着您对按日期排序的注释进行单独的API调用?这会在前端复制注释,并要求您在两个地方而不是一个地方更新它们(一个用于帖子,一个用于注释,假设可以编辑或更新注释).
    • 您是否实施了某种前端数据规范化?这意味着你有一个缓存层来保存嵌套数据,然后你将各个资源分配给它们相应的服务?
  2. 如果您的数据具有不同的嵌套级别,该怎么办?继续发帖和评论示例.如果您的评论可以回复到10级,该怎么办?

    • 如果您对帖子和评论进行了单独的API调用,这会如何影响您的数据模型?
    • 如果您选择这种方法,这会如何影响您的缓存层?
  3. 如果我们不只是在讨论帖子怎么办?如果您可以评论照片和其他资源怎么办?

    • 这对上面的数据建模模式的两个选项有何影响?

打破这个例子,如果我们谈论的是朋友之间的递归关系怎么办?


我最初的想法和假设的解决方案

我最初的想法以及我如何攻击它是使用缓存层并规范化数据,以便:

  1. 缓存层处理任何必要的规范化
  2. 缓存层保存每个记录的一个规范表示
  3. 服务与缓存层通信以执行CRUD操作
  4. 服务通常不关心也不需要知道数据模型的嵌套/复杂程度,当数据到达服务时它是标准化的

递归关系在某些时候需要是有限的,你不能只是永远地继续嵌套.


这当然听起来很棒,但我看到了很多潜在的陷阱,并希望获得观点.我发现很难将抽象的最佳实践从具体的解决方案分离到特定的数据模型.我很想知道其他人如何解决这个问题,以及他们将如何解决这个问题.

谢谢!

data-modeling angularjs

9
推荐指数
1
解决办法
649
查看次数

我如何建模(GitHub)相关的权限?

tl; dr:我如何实现像(例如)github的权限模型

更新以尝试解决@ philipxy的一些评论:

我打算实现一个类似于github的权限模型:

  1. 用户
  2. 用户可以成组
  3. 用户可以在组织中
  4. 团体可以在组织中
  5. 用户将被允许在资产,组或组织中执行任何C,R,U和D操作,如下所示:
    1. 允许那些(C,R,U,D)操作的个人用户
    2. 已被授予这些权限的组的成员
    3. 已被授予这些权限的组织的成员
      1. 或者作为该组属于具有权限的组织的组的成员
  6. 用户被授予读取权,因为资产/组/组织对匿名用户("公共")是可见的(可读)
  7. 用户还应具有一组权限,以表明他们是否可以对权限执行任何C,R,U或D(用户可以为其他用户,组创建权限[C,R,U,D]或组织)
    1. 用户可以为他们创建的任何资产,组或组织设置权限,或者为其授予权限的任何资产,组或组织设置权限.

这些权限将控制谁可以对站点中的资产,组和组织执行创建,读取,更新和删除(CRUD)操作.

大致如何对此进行建模?

显然我有这些模型:

  1. 财富
  2. 用户
  3. 组织

接下来是什么?

  1. 允许?
  2. PermissionType(捕获C/R/U/D)?

我正在使用节点中的mysql(通过sequelize),但我可以自己弄清楚具体的语法,我还没有想出如何在概念上做到这一点.

更多@ philipxy的观点:

你提议我做的更多的事情确实是我认为我正在寻求帮助的事情.也就是说,那些信息设计方法(NIAM,FCO-IM,ORM2,IDEF1X)正是我正在寻找的.我知道有关关系数据库实现(学习规范化和正常形式以及诸如此类的日子)的相当数量,但实际上指定业务需求并将其转换为可操作规范的过程是一项挑战.

  • ORM2 很难找到,因为名称冲突与模块的NodeJS的.:我已经下载了从NIAM维基百科页面链接的书籍
  • 现在使用NIAM似乎不太常见?
  • FCO-IM:我从他们的网站上下载了这本书
  • IDEF1X:看起来也很有趣

我想我要去拿一本数据库教科书.

更多关于谓词的工作:

  1. U 识别出一个 User
  2. A 识别出一个 Asset
  3. G 识别出一个 Group
  4. a User U可以是0或更多Groups G
  5. O 识别出一个 Organization
  6. a User U可以是0或更多Organizations O
  7. a Group G可以是0或更多Organizations O
  8. 资产A可以由a创建User U …

database database-design web-applications data-modeling relational-database

9
推荐指数
1
解决办法
1256
查看次数

如何生成Kotlin代码的Diagrams和UML?

如何为Kotlin代码生成UML和图表?我不认为获得Intellij的付费版本是我的选择.我一直在尝试Intellij插件,我还没有发现任何有效的东西.

我想从我已编写的Kotlin代码生成图表和uml.像这样的工具可以节省我很多时间.

谢谢

java uml class-diagram data-modeling kotlin

9
推荐指数
2
解决办法
4546
查看次数

如何从引用的架构中排除属性?

我有一个端点用于创建地址和一个用于更新地址。在 OpenAPI 规范中对此进行描述时,我想使用地址组件,这样我就不必两次指定地址。现在的问题是,用于更新的地址对象应该包含属性“id”,但用于创建的地址对象却没有。

所以基本上,我正在寻找一种方法来描述组件部分中的完整地址(包括 id 属性),然后引用创建端点,但不包括那里的“id”属性。

rest data-modeling swagger openapi

9
推荐指数
1
解决办法
8198
查看次数