问题标签 [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.
ruby-on-rails - Rails:如何像在 django 中一样使用 ActiveRecord::Schema 创建数据库模式?
我喜欢 Rails,但我不是迁移的忠实粉丝。
如何使用 ActiveRecord::Scema 工具在不使用 SQL 和迁移的情况下创建数据库?
我知道你是这样使用它的:
但是你如何运行它?
请不要推荐使用迁移,因为我......根本不喜欢它们。
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)。我很清楚有一些位置数据库可供购买,也许有些是免费的,我可以使用并且不必担心这一点。但是,我想努力理解这一点,因为我相信它会在未来帮助我明智地进行架构设计,而且还因为如果需要更改任何内容,我希望拥有布局的可定制性。
问题:
- 这种伪模式看起来是正确的还是会更好(意见)?
- 它是否被称为“合理化”数据库,或者其他什么(将投票支持正确答案)?还有多远(观点)
- 还会有一个用户表,以及其他包含地址(团队、国会大厦等)的表,如果理论上是正确的,那么伪模式对于这样的数据库是否是一个好的计划(意见)?
谢谢大家的时间,我会投票赞成任何彻底和连贯的答案。数据库专家或具有多年数据库经验的人优先,但我会听取所有答案。另外,我不确定这是否应该是一个社区 wiki,但我现在没有将它标记为一个。谢谢。
更新:另外,我忘了提到我知道“合理化”数据库需要连接,有时需要子查询。我通常滥用 LEFT OUTER JOIN,但是将这些表绑定在一起以显示地址而不是执行 4 个不同的查询的最有效方法是什么?谢谢。
更新:好的,现在这可能过于规范化或不够规范化或根本没有,但是你们能告诉我你是否更喜欢这个伪模式吗?
要获得地址,它看起来像:
或者,也许你们知道编写该查询的更好方法。但无论如何,这看起来比第一个模式更好吗?
sql-server - 从 ADO.NET 生成 SQL Server 表架构的代码
我很想使用 ADO.NET 生成一个 CREATE TABLE 脚本来创建给定表的精确副本。
原因是持久性测试。我想知道我的应用程序是否会持久保存到特定数据库。我希望能够将应用程序指向有问题的数据库和表,然后应用程序将生成一个新数据库,其中包含指定表的精确副本。因此,可以在不触及原始数据库的情况下对克隆表进行持久性测试,并且当我完成后,可以简单地删除新数据库。
在我开始这个雄心勃勃的项目之前,我想知道是否已经存在任何东西。我试过谷歌,但我能找到的只是通过 SSMS UI 而不是通过代码获取模式生成 SQL 的方法。
ruby-on-rails - 如何回滚特定迁移?
我有以下迁移文件db\migrate\20100905201547_create_blocks.rb
如何专门回滚该迁移文件?
mysql - 在 RDBMS 中,Concrete 对象是否有正式的设计原则,例如 Course vs CourseSession?
在设计RDBMS schema时,我想知道具体对象是否有形式原则:例如,如果是Persons表,那么每条记录都是非常具体和唯一的。事实上,每条记录都代表一个独特的人。
但是像Courses
(在学校里)这样的桌子呢?它可以有描述、单元数、仅在秋季(秋季)或春季提供等,这些是课程的“一般属性”。
然后是 actual CourseSessions
,它有关于time_from
and的信息time_to
(例如上午 10 点到 11 点),无论是周一、周三还是周二/周四,以及教授它的讲师,还使用 a 指向course_id
Courses 表。
所以上面两张表都是需要的。
是否有“具体”与“抽象”的表格设计原则?
更新:我在这里的“抽象”意思是一门课程是一个抽象的概念……它可以有多个实例……例如上午 10 点到 11 点的物理 10 课程,以及下午 12 点到 1 点的课程。
ruby-on-rails - Rails 3. 创建生产数据库
如何在 Rails 3 中创建生产数据库并将模式加载到其中?
我尝试了以下方法...
一世。
二、
...但它们都不起作用。
谢谢。
Debian GNU/Linux 5.0.6;
导轨 3.0.0;
Sqlite3 3.7.2。
sql - 主键是 nchar 而其他字段是 nvarchar 是否有原因?
我正在研究 MSDN 中的一个示例,该示例使用一个小型数据库来演示数据驱动测试,这是简单的模式:
我的问题是:选择 nchar 作为 UserId 的数据类型和 nvarchar 作为 Password 的数据类型的根本原因是什么?
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 次购买会怎样?
这里的其他选择是什么?我必须完全正常化吗?
嗯。我们回到了关系。
ruby - 您将如何在 MongoDB 中有效地实现这些查询?
链接有一个或多个标签,所以起初嵌入标签似乎很自然:
如何有效地实施这些查询?
- 获取包含一个或多个给定标签的链接(用于搜索具有给定标签的链接)
- 获取所有标签的列表而不重复(用于搜索框自动完成)
- 获取最受欢迎的标签(显示前 10 个标签或标签云)
表示上述链接的想法基于MongoNY 演示文稿,幻灯片 38。
sql-server - Facebook 的 DB 模式,例如 Wall +“共享链接”
我正在为 facebook 制作一个数据库模式,比如墙结构。我需要保存墙上的帖子、分享链接、分享视频到我的数据库中。直到现在我能够制作这个架构:
接下来,我必须添加用于添加“共享链接”和“共享视频”功能的架构。
现在有了这个模式:
第一种情况:插入墙帖时,[SharedLink]、[SharedLinkTitle]、[SharedLinkDesc]、[SharedLinkImageSrc] 列将被插入为空,其余列将具有值。
第二种情况:插入“链接共享”时,“[WallText]”列将作为空值插入,其余列将具有值。
对于我的案例,70% 的时间将发布墙贴,30% 的“链接”将被共享,这意味着 70% 的案例 [SharedLink]、[SharedLinkTitle]、[SharedLinkDesc]、[SharedLinkImageSrc] 将被插入为 null . 现在我担心的是是否可以插入空列,或者我应该为“共享链接”的目的使用单独的表,并使用这样的分隔表:
我必须以类似的方式添加架构以进一步共享视频。请指导我应该朝哪个方向移动?