小编Ant*_*222的帖子

如何在 PostgreSQL 中为联合类型建模

我们有一个规则的一般概念,其中特定的实现细节存储在他们自己的表中。我们目前有以下架构:

Rule 
 * id 
 * name
 * ruleAId
 * ruleBId
 * ....
 * ruleNId
 * created 
 * updated

RuleA
 * id 
 * ...

RuleB
 * id 
 * ...

....

RuleC
 * id 
 * ...
Run Code Online (Sandbox Code Playgroud)

我们不喜欢的部分是每个特定规则实现都有一个可为空的列。

我们有两种可能的解决方案,但都有明显的缺点:

  1. 将关系移动到具体实现——DOS数据库

将规则 ID 存储在具体的实现表上,所以我们的模式变成:

RuleA
 * id 
 * ruleId
 * ...

Rule 
 * id 
 * name
 * created 
 * updated
Run Code Online (Sandbox Code Playgroud)

正如标题所暗示的那样,这意味着每次需要查找规则实现时都要进行 N 次查询。估计对性能不利。

  1. 放弃参照完整性 - Yolo 完整性

如果我们从 Rule 表中删除对参照完整性的需求,我们只需要一个列来存储特定的实现主键和一个枚举来告诉我们 id 用于哪个表,给我们:

Rule 
 * id 
 * name
 * implementationType 
 * implementationId
 * created 
 * …
Run Code Online (Sandbox Code Playgroud)

postgresql

6
推荐指数
0
解决办法
1411
查看次数

数据库文件在共享文件夹中的放置

使用MS SQL Server将数据库放置在快速本地网络上的远程共享文件夹中,而不是放置在安装服务器软件的物理硬盘上是一种正常做法吗?本地安置会避免哪些问题?例如,网络故障是否会通过成功修改一个而未能修改另一个而导致.mdf.ldf变得不一致?

编辑: 尽管Microsoft建议使用存储区域网络( SAN ) 或SCSI而不是简单的共享文件夹,但您能告诉我后者的缺点吗?

sql-server

5
推荐指数
1
解决办法
1717
查看次数

标签 统计

postgresql ×1

sql-server ×1