我有以下两个表:
FileData:
* FileSystemID
* FilePath
* Checksum
* Data
ScanResult:
* Checksum
* Result
* ScanType
FileData
和ScanResult
表格通过其Checksum
列相关联。
他们可以有多对多的关系,其中重要的是从FileData
到ScanResults
的关系。 (相反的关系并不重要。)
问题是,对于这个用例,哪种设计更有效:
在两个表之间有一个关联表(它将具有表外键),因此我们可以使用此表来使用JOIN。
使用两个表中的SELECT创建查询 - SELECT * FROM FileData, ScanResult WHERE FileData.Checksum = ScanResult.Checksum
如果您有任何其他建议,那就太棒了!
当引擎是postgresql时,我正在使用SQLAlchemy(在python中)。
**编辑**
来自DB的样本:
FileData:
FileSystemID | FilePath | Checksum | Data
1 | /user1/a.bin | 5953E1EBB5A153AF93DA61EA433889D0 | ...
1 | /user1/b.bin | 207402D3E82BF24E7ED4965DC66D426C | ...
2 | /user2/h.bin | 5953E1EBB5A153AF93DA61EA433889D0 | ...
2 | /user2/z.bin | 8D41627E46D5B8556D0D3E30EC15538E | ...
ScanResult:
Checksum | Result | ScanType
5953E1EBB5A153AF93DA61EA433889D0 | 1 | general
5953E1EBB5A153AF93DA61EA433889D0 | 0 | logistic
5953E1EBB5A153AF93DA61EA433889D0 | 1 | anomaly
207402D3E82BF24E7ED4965DC66D426C | 1 | general
207402D3E82BF24E7ED4965DC66D426C | 1 | logistic
8D41627E46D5B8556D0D3E30EC15538E | 0 | general