标签: database-design

在具有数百万行的表中更改列定义的最有效方法是什么

我需要在包含数百万行的表中将一列从 NOT NULL 更改为 NULL。我试过一个简单的

alter table Table1 ALTER COLUMN Column1 XML NULL
Run Code Online (Sandbox Code Playgroud)

但它需要永远。所以这里是我的问题:

  1. 为什么应用更改需要这么长时间?
  2. 有没有更好的方法来做到这一点?

sql-server-2008 database-design

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

哪些学校以毕业级数据库研究而闻名?

最近世界上哪些学校以在数据库领域进行的研究而闻名?

database-design

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

数据库设计建议

我正在为我们的销售团队设计一个数据库,用作快速工作报价工具。我想要一些关于设计特定方面的反馈。

报价基本上是通过选择一个预定义的“组件”列表来建立的,每个“组件”都具有商定的价格。主窗体的简化视图如下所示:

                                                  +------------ --- ---+
                                                  | Assembly options   |
+------------+------------+----------+------------+---+---+---+ --- +--+
| assembly ? | unit cost  | quantity | total cost | 1 | 2 | 3 |     |50|
+------------+------------+----------+------------+---+---+---+ --- +--+
| VSD55      | £10'000    | 2        | £25'500    | 1 | 1 |   |     |  | 
| RDOL2.2    | £2'000     | 1        |  £1'500    |   | 1 |   |     |  | 
| DOL5.0     | £1'000     | 1        |  £1'200    |   |   | 1 |     |  | …
Run Code Online (Sandbox Code Playgroud)

database-design database-recommendation

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

在 MySQL 中处理公元 1000 年之前日期的最佳方法?

我正在为公元 1000 年之前扩展的记录创建一个数据库,但 MySQL 日期和日期时间字段仅支持从 1000 开始的日期。

有没有比使用 bigint 类型使用 Unix 时间戳计算 1/1/1970 之前/之后的秒数或切换到支持更大日期范围的数据库软件更方便的方法?

mysql database-design best-practices timestamp date-format

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

记录迁移数据库映射的最佳方式

我正在处理一个包含用于迁移的映射数据库元素的项目,我想知道其他人使用哪些工具来执行此操作?

Excel 是一种非常灵活的记录简单映射的方式,但我想知道是否有人有他们遵循的特定方法或他们可以推荐的其他工具?

database-design migration documentation

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

聚集索引现在是必须的——为什么?

早些时候,对我来说,关于是否(总是)使用/避免聚集索引的辩论/讨论没有定论。

好吧,我知道它们有时会在适当的+特定目的和上下文中使用。

SQL Azure 数据库聚集索引要求

“SQL Azure 不支持没有聚簇索引的表。一个表必须有一个聚簇索引。如果一个表是在没有聚簇约束的情况下创建的,那么在允许对该表进行插入操作之前必须先创建一个聚簇索引”

不符合先前的结论、理由和解释。

我在前面的解释中遗漏了严格要求无任何例外地普遍存在的聚集索引的基本原理是什么?

index database-design sql-server azure-sql-database

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

处理多个支付网关的模式设计

这更像是一个需要反馈的问题。我正在设计一个处理多个支付网关的数据库。支付网关在支付前通常需要一张订单明细表(这对所有 PG 都是通用的),以及一个交易明细表,用于存储支付后的响应。

现在为了处理多个支付网关,我可以保留一个交易表,用所有支付网关提供的所有字段和一个说明该行来自哪个 PG 的字段填充它;
或者,我可以为每个带有前缀 likepaypal_bank_etc的 PG 创建单独的事务表,每个表都有每个人需要的字段。

我只是不确定哪种方法更合适。还需要为我将来可能遇到的类似场景学习它。

database-design

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

有效地存储不规则/重复间隔(想想日历/事件)

我正在开发一项服务,该服务依赖于用户能够接收他们自己选择的消息。这些消息在发送进行处理之前需要存储在某处。

现在我将它们存储在 postgres 数据库中,但我觉得它不能很好地扩展。

目前的布局是:

ID - MESSAGE - DATE - TIME
Run Code Online (Sandbox Code Playgroud)

DATE 和 TIME 字段保存应该发送消息进行处理的时间和日期。这不能很好地扩展,好像需要在每个月的第一个星期一发送一条消息,它会占用 12 倍的空间。

问题是我似乎无法找到另一种方式来表示何时应该发送消息进行处理?理想情况下,我希望能够在一行中表示每个日期。

我们也在讨论使用 Redis,但很快就决定不使用,因为我们需要 webfrontend 的数据库。

任何人都知道如何优化消息存储?如何表示何时应该发送消息进行处理?

我也愿意就如何解决这个问题提出任何其他建议。

postgresql database-design time

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

用于识别数据库的 PowerShell 脚本

我有足够的 PowerShell 技能来开始工作,但没有使用 SQL 服务器。有人可以指出我如何使用 PowerShell 获取有关远程 SQL 服务器的信息以识别其上运行的数据库的正确方向。

谢谢你的帮助。

编辑 - 使用 SMO 代码

我试图将这段代码放在一起,但得到错误:找不到类型 [Microsoft.SqlServer.Management.Smo.Server] 确保加载了包含此类型的程序集

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$sqlServer = New-Object("Microsoft.SqlServer.Management.Smo.Server") "MSQLULTDBS04"
foreach($sqlDatabase in $sqlServer.databases) {$sqlDatabase.name}
Run Code Online (Sandbox Code Playgroud)

database-design sql-server powershell

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

不知道如何将可变实体转化为关系表

介绍和相关信息:

下面的例子说明了我面临的问题:

动物有一个种族,可以是可以是SiamesePersian可以是德国牧羊犬拉布拉多猎犬

Animal 是一个强大的实体,而其种族是一个属性,可以具有两个提供的值之一( cat 或 dog )。 这两个值都很复杂(我在这里只添加了狗/猫的类型来说明问题,但也可以有猫/狗的名字和一堆其他东西)。

问题:

我不知道如何为此示例创建关系表。

我解决问题的努力:

我曾尝试使用陈的符号绘制 ER 图,这代表了问题,但作为初学者,我不知道我是否做得对。这是我得到的:

在此处输入图片说明

如果我画错了,我深表歉意,如果是这样,请纠正我。我不希望简单地获得“免费解决方案”,而且还希望学习如何处理这个问题,以便我将来可以自己解决。

我唯一想到的是创建两张单独的桌子,一张给猫,一张给狗。此外,Animal表中的race属性将只存储catdog值。像这样的东西:

Animal< # Animal_ID, race, other attributes >
Cat < # Cat_ID, $ Animal_ID, breed >
Dog < # Dog_ID, $ Animal_ID, breed >
Run Code Online (Sandbox Code Playgroud)

我真的对我的解决方案有一种不好的感觉,我担心它是错误的,因此下面的问题。

问题:

  • 如何将我的示例转换为 ER 图?
  • 如何将该 ER 图转换为关系表?

如果需要更多信息,请发表评论,我会尽快更新我的帖子。也可以随意添加适当的标签,因为我在这里很新。

谢谢你。

database-design subtypes

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