我正在为票务系统创建一个关系数据库模式。票务系统将具有两种不同类型的任务(票证),我要说我必须保存在单独的数据库表中。但是,这两种任务都将具有注释,并且注释将具有相同的属性,无论它们属于哪种任务。
Task1和NoteForTask1以及Task2和NoteForTask2之间的关系是一对多的(一个任务可以具有0-n个注释)。
我对Task1和Task2表的外观的想法是(请记住Task1和Task2具有完全不同的属性):
Task1
Task1ID <PK>
Task1Property1
Task1Property2
etc...
Task2
Task2ID <PK>
Task2Property1
Task2Property2
etc...
由于两个任务的注释具有相同的属性,因此NoteForTask1和NoteForTask2表应如下所示:
NoteForTask1
NoteID <PK>
Task1ID <FK>
NoteText
NoteForTask2
NoteID <PK>
Task2ID <FK>
NoteText
由于Note1和Note2具有完全相同的属性,因此我想可以将它们保留在同一数据库表中。但是在那种情况下,Task1和Task2的外键会重叠,因为Task1ID和Task2ID都有自己的序列,所以从外键TaskNID本身,就无法确定它是Task1ID还是Task2ID的ID。
如何构造数据库架构以将Task1和Task2保留在两个单独的表中,但在一个表中包含注释?还是那是完全错误的方法,我应该在两个单独的表中保留两种不同类型的笔记?