У меня есть следующие две таблицы:
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
Если у вас есть какие-либо другие предложения, это было бы здорово!
Я использую SQLAlchemy (в python), когда движок postgresql.
** EDIT **
Пример из БД:
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