问题标签 [schema-design]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 使用除主键以外的列的导轨关联
我对 Rails 很陌生,想利用 ActiveRecord 提供的关联来尝试建立一个新的项目和模式。我有两个模型,用户和问题。当管理用户设置用户时,我有一个带有类别列表复选框的表单。我希望这些类别映射到特定问题,以便稍后询问设置用户。我的想法是我有一个映射表 user_to_categories,它可以让我从用户那里得到必要的问题。但是问题表将具有 question_id 的主键,因此 has_many :through 似乎在这里不起作用。由于许多问题可以属于同一类别,因此 category_id 将只是问题表中的另一列。关于如何设置它以利用 Rails 和活动记录关联的任何建议?
database-schema - SQuirreL SQL 中列属性的含义
我正在使用 SQuilrreL SQL 连接到本地 MySQL 服务器,并且正在查看某个表的列的规范。同时我在 MySQL(MySQL Workbench)中直接查看同一张表的规范,很明显,列的属性是不同的。例如,在 SQuirelL SQL 中,我有 , 和 等属性IS_NULLABLE
,DECIMAL_DIGITS
而NUM_PREC_RADIX
在 MySQL 中,我有如下属性:Not Null
, Auto Increment
, Zero Fill
。
我的问题 - SQuirreL SQL 中所有列属性的含义是什么?更好的是 - 我如何将它们映射到 MySQL 的属性?(其中一些很明显,例如IS_NULLABLE
<==> Not Null
,但大多数都不是那么清楚)。
我需要这个,因为我刚刚使用了 SQuirreL SQL 的插件 CopyDB,从 MySQL 到 Derby,并且想知道转换中是否保留了所有内容以及对表结构进行了哪些更改。
谢谢!
提供
django - Django 模型继承与组合,并同时查询多个模型/表
我有一个 Django 应用程序,它有许多不同的模型,都有一堆公共数据。最终,我认为这个问题归结为继承和组合之间的决定。我目前的实现是这样的:
使用此模型,我可以Thing
使用 Thing 模型的管理器查询 a。使用 上的类型字段Thing
,我可以通过查看type
包含“a”或“b”的字段,然后询问 (ie)来获取子对象数据thing.a.aFoo
。这是我喜欢的一个功能,因为它是我的应用程序中一个相当常见的操作,用于获取所有Thing
对象的列表。
我在这里看到几个问题。首先,该type
字段似乎没有必要。有没有办法在不必先查找类型的情况下获取子数据?似乎我可以使用一个实例方法来解决这个问题,该方法在给定类型值的情况下返回正确的对象,或者如果我真的想摆脱类型字段,我可以遍历每个反向关系字段Thing
,寻找一个这不会引发DoesNotExist
异常。不过,这对我来说感觉很脆弱。如果我添加一个新的 'subthing' C
,我必须更新Thing
以查找新类型。我可以通过制作Thing
和抽象模型来解决这个问题。这样,A
获得B
所有领域,Thing
我就不必使用type
场地。但是,问题是我失去了对所有Thing
对象执行查询的能力。
我正在考虑的另一种模型通过将数据Thing
转换为 onA
和的字段来颠覆这个模型B
。
这个版本有一些好处。它摆脱了type
,Thing
而且——至少对我来说——看起来和感觉更干净,更不脆弱。但是,这里的问题与Thing
第一个版本中抽象的问题相同。我失去了同时查询所有“子事物”的能力。我可以查询A
对象或查询B
对象,但不能同时查询。可以使用这个版本的模型而不必牺牲查询所有“子事物”的能力吗?一种可能性是编写一个查询两个模型并返回QuerySet
所有对象的管理器。那样有用吗?
xml - XML 模式中的模块化是什么意思?
XML 模式中的模块化是什么意思?即给定一个xsd,可以做些什么来使其模块化?
hbase - HBase:扫描列限定符 - 可能吗?
我有一些与每一行相关的各种 ID:比如说1001
, 和1002
. 这些 ID 中的每一个都有一组相似的属性。
所以我的想法是让一个列族('cf')带有列限定符,如下所示:
我是否能够扫描:行(x)、列族(cf)、列(1001*),以便在这种情况下为 1001 获取所有属性的映射?
显然我可以对行键执行此操作,我不确定列限定符是否相同。
xml - XML 模式设计 -源属性值
我被要求记录一个 XML Schema 文件。我需要包含每个模式元素的业务和技术描述。查看我们的指南和 W3C XML Schema 建议,我发现自己想知道最佳实践究竟是什么。
我们的指南规定注释标签应具有以下格式:
XML 建议声明源属性的类型应为“xs:anyURI”。显然,“BuinessDescription”和“TechnicalDescription”不是 URI,并且会在整个模式中多次重复。因此,将源属性用作语义属性真的正确吗?
在 XML Schema http://shop.oreilly.com/product/9780596002527.do中,Eric van der Vlist 建议这是可以接受的,但也与此观点相矛盾,指出这可能导致互操作性问题。
c# - 哪种模式更改方案?
我当前的架构如下所示:
在上面,该ID
字段是一个IDENTITY INT
也用作最终用户的字段account Id
。这DisplayVal
就是他们在屏幕上看到的。
一个新客户提供了他们自己的Account Id
价值观,但他们是alpha-numeric
,所以他们不能只是进入该IDENTITY
领域。以下是我的场景: 我正在寻找能够提供最佳maintainability
、end user experience
和magnitude and impact of changes
的场景testing/QA impact
。
我的第一个场景是添加一个Account Number
列,该列将是 aVARCHAR(x)
并容纳所有类型的Account Numbers
. 它看起来像这样:
在上面,在第一个客户端的情况下,seeded Identity
将Account Id
被复制到 中Account Number
,但对于另一个客户端,仍然会seeded Identity
创建一个,但它们Account Number
会有所不同,它可能与 . 匹配,也可能不匹配Display Value
。
我的第二种情况是不添加任何列,对于提供 的客户端Account Number
,我将关闭IDENTITY INSERT
并插入新的 Id,然后重新打开身份插入。如果客户没有提供Account Number
,我会自动生成一个,显然是为了避免冲突。
第三种情况基本上是将新Account Number
的作为 alegacy Account Number
并为所有新记录创建新的身份值。这将要求最终用户熟悉新的Account Number
. 这可能是最简单的,但不确定是否有任何缺点。
如果您知道在这种情况下会很好地工作的另一种情况,请告诉我。
node.js - MongoDB外键查询
我有两个收藏:
用户:
- { id:"aaaaaa" 年龄:19 , 性别:"f" }
- { id:"bbbbbb" 年龄:30 , 性别:"m" }
评论:
- { id:777777 , user_id:"aaaaaa" , text:"一些评论数据" }
- { id:888888 , user_id:"aaaaaa" , text:"一些评论数据" }
- { id:999999 , user_id:"bbbbbb" , text:"一些评论数据" }
我想找到所有评论在哪里sex=f
和age>18
(我不想嵌套,因为评论集合会很大)
mongodb - 作业队列的正确 mongo 模式设计是什么?
我想在 Mongo 中实现一个作业队列。整个软件系统都是基于 Mongo 的,所以它看起来很自然并且可能很合适。
作业集合将每个作业状态存储为一个文档。我想这是一个基于我的查询需求的无上限集合。工作文件如下所示:
作业集合的典型访问模式将是:
- 根据类型、状态、优先级和可能的范围查询来查找要执行的未处理作业的时间。提交大于上一次读取时间
- 查找所有已处理(完成、失败、取消)的作业
- 查找所有未处理(已提交、正在运行)的作业
- 通过 _id 查找特定作业并检索其有效负载(当状态正在运行时)
大部分查询将查找需要执行的未处理作业。将有效负载移动到jobs_payload集合是否值得,以便文档大小在作业集合中变化不大?
与未处理的作业相比,大量已处理(已完成、失败、取消)的作业最终会增加作业集合所需的工作集内存吗?即使使用正确的索引,执行未处理作业的访问时间会变慢吗?
我可以通过模式设计做出哪些替代方案和权衡取舍?
mongodb - 我应该将活动时间线放在 mongodb 中的哪个位置,嵌入到用户中还是单独放置?
我正在构建一个电子学习应用程序,并将学生活动显示为时间线,我应该将它们嵌入到user
集合中,还是使用userId
.
约束:
- 一对多的关系。
- 用户活动详细且数量众多
- 在 90% 的情况下,我们一次只需要查看一个用户,另一种情况是主管(老师)需要查看用户活动的摘要(可能是另一个集合?)
- 搜索活动和找学生的用例我还没想过,也许我以后会有这个用处?(例如,看看谁先完成了某些特定活动?但这会将关系更改为多对多,这是一个完全不同的问题)
我在这两个问题中找到了相关问题的不同模式:
- MongoDB架构设计——选择两种收集方式或嵌入文档推荐
try and embed as much as possible
- 用于存储用户位置历史提醒的 MongoDB 模式
don't bloat a collection, because querying the elements deep below might be hard, especially if you're going to use lists