Вы можете выбрать отображение базы данных на основе постоянства сущностей, т. Е. Может ли ваша сущность сохраняться независимо или нет.В вашем конкретном случае следующие являются автономными и зависимыми объектами:
- Имя файла> Автономный.Файл может сохраняться даже тогда, когда не будет никакого теста или сборки.
- Имя теста> Зависимый.Имя теста может существовать, только если файл существует, а сборка существует.И каждое имя теста принадлежит одному и только одному имени файла.
- Build> частично зависит от файла.Вы можете создать, когда есть хотя бы файл
Итак, теперь вы можете начать с отображения базы данных следующим образом:
FileName
+----------+----------
| Id | Filename |
+----------+----------+
| 1 | A.txt |
+----------+----------+
| 2 | Er.txt |
+----------+----------+
// Id is primary key
//Если тест зависел только от файла, то здесь testId можно сделать внешним ключом напрямую, но тест зависит от сборки, и это один ко многим.(один тест может выполняться на нескольких сборках)
Тест
+------+--------------+
| Id | Test Name |
+------+--------------+
| 1 | Test 1 |
+------+--------------+
| 2 | Test 2 |
+------+--------------+
//Id is primary key
Таблица сборки
+------+--------------+
| S No | Build Number |
+------+--------------+
| 1 | Build_123 |
+------+--------------+
| 2 | Build_234 |
+------+--------------+
// Id is primary key
BuildTestMap
+------+--------------+ ------- + ------ + --------+---------
| Id | BuildId | TestId | FileId | Executed | Passed |
+------+--------------+ -------+ -------+ -------- + -------
| 1 | Build_123 | 1 | 2 | y | n |
+------+--------------+ -------+ ------+ ----------+ -------
| 2 | Build_234 | 1 | 2 | y | y |
+------+--------------+------- + ------+ ----------+ -------
//Notice here TestId is foreign key of Test table and FileId is foreign key of File table and BuildId is foreign key of Build table