问题标签 [database-schema]

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.

0 投票
2 回答
1161 浏览

ruby-on-rails - Rails:如何像在 django 中一样使用 ActiveRecord::Schema 创建数据库模式?

我喜欢 Rails,但我不是迁移的忠实粉丝。

如何使用 ActiveRecord::Scema 工具在不使用 SQL 和迁移的情况下创建数据库?

我知道你是这样使用它的:

但是你如何运行它?

请不要推荐使用迁移,因为我......根本不喜欢它们。

0 投票
3 回答
512 浏览

database-design - 协助数据库模式(独立于平台)

我有一个意见问题,但同时可能有一个正确的答案。我正在尝试开发一套产品,并希望确保因为我自己在做,所以我第一次就做对了。我多次重写了架构,每次都认为它更好。然后我可能会遇到一些新想法,它要么需要在架构上进行大量工作,要么会破坏我的架构。

在大学里,我学会了“合理化”(我认为这是他们使用的词,可能会离题)一个数据库,有 5 个级别。据我记得,3 级是最常见的。我知道这种做法是为了确保数据不会重复,为此,您必须将表分解为较小的表。并且取决于你打破它的程度,级别越高。好吧,我不知道我是否想要最高级别,但我知道我希望它尽可能高效。我已经使用了 4 年的 SQL Server 2000/2005/2008 和 2 年的 Oracle,使用 Informix 大约 6 个月(5 多年前),在这里或那里使用 mySQL 和大约 6 个月的 Access。我的首选是 SQL Server,但我希望架构在任一平台上都一样高效。

这是一些表的伪模式布局,然后我将解释我想要做什么。

我很抱歉它只是一个伪模式,但这就是我现在所拥有的,因为我正在休息时在纸上进行设计,但在我走得太远之前有一个问题。我想做的是确保一切都正确地相互联系。我的信念是邮政编码属于一个州和一个城市,但没有一个城市属于任何一个邮政编码,它可能有很多。如果我将邮政编码放在制造商表中,我希望能够获得州和城市。但我不想在其他表中多次使用任何 ID。我的意思是在 ZipCodes 和 Cities 中拥有 StateID 的次数可能太多了。一个州可以有多个同名城市,多个州可以有同名城市。但我不确定我是否想要一个 CityNames 表,然后是一个 CityStates 表(CityNameID 和 StateID)。我很清楚有一些位置数据库可供购买,也许有些是免费的,我可以使用并且不必担心这一点。但是,我想努力理解这一点,因为我相信它会在未来帮助我明智地进行架构设计,而且还因为如果需要更改任何内容,我希望拥有布局的可定制性。

问题:

  1. 这种伪模式看起来是正确的还是会更好(意见)?
  2. 它是否被称为“合理化”数据库,或者其他什么(将投票支持正确答案)?还有多远(观点)
  3. 还会有一个用户表,以及其他包含地址(团队、国会大厦等)的表,如果理论上是正确的,那么伪模式对于这样的数据库是否是一个好的计划(意见)?

谢谢大家的时间,我会投票赞成任何彻底和连贯的答案。数据库专家或具有多年数据库经验的人优先,但我会听取所有答案。另外,我不确定这是否应该是一个社区 wiki,但我现在没有将它标记为一个。谢谢。

更新:另外,我忘了提到我知道“合理化”数据库需要连接,有时需要子查询。我通常滥用 LEFT OUTER JOIN,但是将这些表绑定在一起以显示地址而不是执行 4 个不同的查询的最有效方法是什么?谢谢。

更新:好的,现在这可能过于规范化或不够规范化或根本没有,但是你们能告诉我你是否更喜欢这个伪模式吗?

要获得地址,它看起来像:

或者,也许你们知道编写该查询的更好方法。但无论如何,这看起来比第一个模式更好吗?

0 投票
1 回答
2292 浏览

sql-server - 从 ADO.NET 生成 SQL Server 表架构的代码

我很想使用 ADO.NET 生成一个 CREATE TABLE 脚本来创建给定表的精确副本。

原因是持久性测试。我想知道我的应用程序是否会持久保存到特定数据库。我希望能够将应用程序指向有问题的数据库和表,然后应用程序将生成一个新数据库,其中包含指定表的精确副本。因此,可以在不触及原始数据库的情况下对克隆表进行持久性测试,并且当我完成后,可以简单地删除新数据库。

在我开始这个雄心勃勃的项目之前,我想知道是否已经存在任何东西。我试过谷歌,但我能找到的只是通过 SSMS UI 而不是通过代码获取模式生成 SQL 的方法。

0 投票
15 回答
575087 浏览

ruby-on-rails - 如何回滚特定迁移?

我有以下迁移文件db\migrate\20100905201547_create_blocks.rb

如何专门回滚该迁移文件?

0 投票
2 回答
333 浏览

mysql - 在 RDBMS 中,Concrete 对象是否有正式的设计原则,例如 Course vs CourseSession?

在设计RDBMS schema时,我想知道具体对象是否有形式原则:例如,如果是Persons表,那么每条记录都是非常具体和唯一的。事实上,每条记录都代表一个独特的人。

但是像Courses(在学校里)这样的桌子呢?它可以有描述、单元数、仅在秋季(秋季)或春季提供等,这些是课程的“一般属性”。

然后是 actual CourseSessions,它有关于time_fromand的信息time_to(例如上午 10 点到 11 点),无论是周一、周三还是周二/周四,以及教授它的讲师,还使用 ​​a 指向course_idCourses 表。

所以上面两张表都是需要的。

是否有“具体”与“抽象”的表格设计原则?

更新:我在这里的“抽象”意思是一门课程是一个抽象的概念……它可以有多个实例……例如上午 10 点到 11 点的物理 10 课程,以及下午 12 点到 1 点的课程。

0 投票
2 回答
32772 浏览

ruby-on-rails - Rails 3. 创建生产数据库

如何在 Rails 3 中创建生产数据库并将模式加载到其中?

我尝试了以下方法...

一世。

二、

...但它们都不起作用。

谢谢。

Debian GNU/Linux 5.0.6;

导轨 3.0.0;

Sqlite3 3.7.2。

0 投票
1 回答
1104 浏览

sql - 主键是 nchar 而其他字段是 nvarchar 是否有原因?

我正在研究 MSDN 中的一个示例,该示例使用一个小型数据库来演示数据驱动测试,这是简单的模式:

我的问题是:选择 nchar 作为 UserId 的数据类型和 nvarchar 作为 Password 的数据类型的根本原因是什么?

0 投票
2 回答
412 浏览

mongodb - 您将如何在 MongoDB 中对此进行建模?

有名称和价格的产品。

用户记录他们购买的产品。

我喜欢这个。但是如果产品id是12字节长,数量和日期时间是32位(4字节)整数,评论平均100字节,那么一篇日志的大小是12+4+4+100=120字节。文档的最大大小为 4MB,因此每个用户的最大日志量为 4MB/120bytes = 33,333。如果假设用户每天记录 10 次购买,则在 33,333/10 = 3,333 天 ~ 9 年内达到 4MB 限制。好吧,9 年可能没问题,但如果我们需要存储更多数据怎么办?如果用户每天记录 100 次购买会怎样?

这里的其他选择是什么?我必须完全正常化吗?

嗯。我们回到了关系。

0 投票
2 回答
354 浏览

ruby - 您将如何在 MongoDB 中有效地实现这些查询?

链接有一个或多个标签,所以起初嵌入标签似乎很自然:

如何有效地实施这些查询?

  • 获取包含一个或多个给定标签的链接(用于搜索具有给定标签的链接)
  • 获取所有标签的列表而不重复(用于搜索框自动完成)
  • 获取最受欢迎的标签(显示前 10 个标签或标签云)

表示上述链接的想法基于MongoNY 演示文稿,幻灯片 38。

0 投票
2 回答
2004 浏览

sql-server - Facebook 的 DB 模式,例如 Wall +“共享链接”

我正在为 facebook 制作一个数据库模式,比如墙结构。我需要保存墙上的帖子、分享链接、分享视频到我的数据库中。直到现在我能够制作这个架构:

接下来,我必须添加用于添加“共享链接”和“共享视频”功能的架构。

现在有了这个模式:

第一种情况:插入墙帖时,[SharedLink]、[SharedLinkTitle]、[SharedLinkDesc]、[SharedLinkImageSrc] 列将被插入为空,其余列将具有值。

第二种情况:插入“链接共享”时,“[WallText]”列将作为空值插入,其余列将具有值。

对于我的案例,70% 的时间将发布墙贴,30% 的“链接”将被共享,这意味着 70% 的案例 [SharedLink]、[SharedLinkTitle]、[SharedLinkDesc]、[SharedLinkImageSrc] 将被插入为 null . 现在我担心的是是否可以插入空列,或者我应该为“共享链接”的目的使用单独的表,并使用这样的分隔表:

我必须以类似的方式添加架构以进一步共享视频。请指导我应该朝哪个方向移动?