多表连接以提高性能?

Ric*_*chC 1 sql t-sql sql-server

如果我有这样的表结构:

交易[TransID,...]

文件[DocID,TransID,...]

签名者[SignerID,...]

签名[SigID,DocID,SignerID,...]

业务逻辑是这样的:

  • 交易可以有多个文件
  • 文档可以有多个签名
  • 并且同一签名者可以在同一事务中的多个文档中具有多个签名

所以,现在我的实际问题:

如果我想在特定事务中找到所有文档,那么在性能方面是否更好,如果我还将TransID和DocID也存储在Signer表中,那么我的连接会更小.否则,我必须通过签名>文档>交易>文档加入以获取该签名者的交易中的所有文档.

我认为在Signer表中拥有那么多关系真的很麻烦,但这样做似乎并不"正确"(也似乎是更新的噩梦)但是我可以看到直接连接可能会有更好的性能.思考?

TIA!

spe*_*der 11

使用标准化版本.只有在性能成为问题时才重新考虑.另一种选择是维护危险.