我需要创建一个跟踪项目的应用程序。所以我有许多项目,每个项目都有 ID、名称和所有者等属性。每个项目下都会有很多任务。每个任务都将具有 ID、名称、完成状态、优先级和所有者等属性。
现在,当我为这个应用程序设计一个数据库时,我想到了两种可能的设计。我不知道哪个是更好的设计。如果您能告诉我以下设计中更好的设计,那就太好了,请不要忘记提及为什么其中一个得分高于另一个。
以下是方法。
方法 1. 在数据库中有 2 个表。一个是项目表,另一个是任务表。任务表将具有项目 ID 的外键,它将特定任务链接到它所属的项目。这种方法相对于下面另一种方法的基本区别因素是,所有任务,无论它属于哪个项目,都将存储在一个且只有一个表中,其长度可以无限增长。
方法 2. 有一个 Project 表,并为每个项目动态创建一个表,其中仅包含该项目的任务。因此,任务表的数量与项目表中的行数一样多。可能存在一种算法,我们可以通过该算法得出动态创建的表的名称。然后,当我们想要查询特定表时,可以使用此逻辑来获取特定表的名称。尽管看起来很麻烦,但我在这种方法中看到的优势是,特定项目的所有任务都将仅在一个表中,其长度不会失控(至少不会像上述情况那样多)。但是表的数量可能会无限增长。