猿问

使用文件名、测试名及其每次构建的结果设计数据库

我要设计一个数据库,在那里我有存储Test Name每个Filename和每一个Test Name可以在几个运行Builds和既可以Pass或Fail。Filename&之间存在 1-1 关系Test Name,这意味着 1 个测试有一个 1 文件。但是每个测试都可以在许多构建上运行,并且可以有不同的输出。


我的方法是:表 1:FileAndTestMap


+----------+----------+

| Testname | Filename |

+----------+----------+

| 1        | A.txt    |

+----------+----------+

| 2        | Er.txt   |

+----------+----------+

表 2:构建


+------+--------------+

| S No | Build Number |

+------+--------------+

| 1    | Build_123    |

+------+--------------+

| 2    | Build_234    |

+------+--------------+

表 3:Build_XXX (对于每个构建)


+----------+----------+--------+

| TestName | Executed | Passed |

+----------+----------+--------+

| 1        | Y        | Y      |

+----------+----------+--------+

| 2        | N        | N      |

+----------+----------+--------+

我不喜欢这种设计,需要一个更好的方法来解决这个问题。任何帮助表示赞赏。


慕容3067478
浏览 154回答 2
2回答

莫回无

您可以根据实体的持久性来决定数据库映射,即您的实体是否可以独立持久化。具体就您而言,以下是独立和依赖实体:文件名 > 独立。即使没有测试或构建,文件也可以保留。测试名称 > 相关。仅当文件存在且构建存在时,测试名称才能存在。并且每个测试名称都属于一个且仅一个文件名。构建 > 部分依赖于文件。您可以在至少有一个文件时构建所以,现在您可以通过这样的数据库映射开始:文件名 +----------+----------| 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构建测试映射+------+--------------+ ------- + ------ + --------+---------| 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
随时随地看视频慕课网APP
我要回答