使用表中的一个字段存储来自两个不同潜在表的记录的ID引用是一种不好的做法吗?

问题描述 投票:0回答:1

我在job表中有一个布尔字段,称为external。如果为true,则job为外部,如果为false,则为内部。

如果job是外部的,那么它需要在表中存储一个引用记录的ID,如果是内部的,则需要在表中存储一个引用记录的clientID表。

我将需要用户选择staff是内部的还是外部的,甚至在他们甚至不知道要选择的jobclient之前。因此,尽管我不确定这是否是个好主意,但我不能只取消staff字段。

对我来说,至少在表面上只使用一个存储external的字段而不是在只有一个存储数据而另一个存储为Null的情况下使用两个字段才有意义。它是ID,所以它不像将来需要更改数据类型并且不匹配。

这可能会引起任何问题吗?出于某种原因,这是不正确的做法吗?因为我有一种感觉,很可能是。

我在Flutter上使用Firestore,但我认为这个问题通常与数据库有关。

database database-design
1个回答
0
投票

我们有类似的情况,子行可能指向不同的父表。我们所做的是,有两个字段:ReferencingTypeName(父表),ReferencingTypeId(PrentTable主键)。

问题是,在这种情况下,我们无法创建FOREIGN KEY。我们必须确保业务逻辑以正确的方式处理它。

[另外,我觉得您不需要单独的ID列,因为您可以找出作业是否在ReferencingTypeName本身之外。

External
© www.soinside.com 2019 - 2024. All rights reserved.