如果同一对象用于两个不同目的,如何构造关系数据库模式?

时间:2018-09-07 16:28:55

标签: database-design relational-database

我正在为票务系统创建一个关系数据库模式。票务系统将具有两种不同类型的任务(票证),我要说我必须保存在单独的数据库表中。但是,这两种任务都将具有注释,并且注释将具有相同的属性,无论它们属于哪种任务。

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保留在两个单独的表中,但在一个表中包含注释?还是那是完全错误的方法,我应该在两个单独的表中保留两种不同类型的笔记?

0 个答案:

没有答案