如果我有这样的表结构:
交易[TransID,...]
文档[DocID,TransID,...]
签名者[SignerID,...]
签名[SigID,DocID,SignerID,...]
业务逻辑是这样的:
所以,现在问我的实际问题:
如果我想查找特定事务中的所有文档,那么在性能方面是否更好,如果我还将TransID和DocID也存储在Signer表中,那么我的联接会更小。否则,我必须通过Signature>加入。文件>交易>获取该签名者交易中所有文件的文件。
我认为在Signer表中拥有那么多关系真的很麻烦,但这样做似乎并不“正确”(也似乎是更新的噩梦)但是我可以看到它可能会有更好的表现直接连接。想法?
TIA!
答案 0 :(得分:11)
使用normalized版本。只有在性能成为问题时才重新考虑。另一种选择是维护危险。
答案 1 :(得分:4)
将它们存储为标准化表格中建议的消费者。添加索引以检索数据并查看性能。虽然您有多对多关系,但请将其视为总数的百分比。
答案 2 :(得分:1)
我还要指出,将签名表存储在签名者表中将不起作用,因为签名者很可能参与多个交易。
这是一个如此简单,小巧,简单的查询,只要它们被正确编入索引,连接就不太可能出现问题。