8

我正在创建一个用于调查的数据库表,我需要记录报告事件的人,这可能是来自供应商或用户表的记录。最简单的方法是在我的调查表中同时包含一个 suppleir 和一个用户 id 列,但这似乎是错误的,有什么更好的方法来做到这一点?

谢谢你。

4

3 回答 3

1

你可以有另外两个表 -IncidentsReportedBySupplier (IncidentID, SupplierID)IncidentsReportedByUser (IncidentID, UserID)- 这将删除空列。

但这也有缺点。然后,您可能会遇到任何人都没有报告的事件。

于 2012-08-20T09:36:24.093 回答
-1

我不知道为什么您的选择“似乎是错误的”。我通常更喜欢您的方法,而不是使用带有 FK 的列而不是多个表。您的方法虽然可能需要在另一列中使用空值,但更加直接和明显。无需任何文件。没有不必要和多余的表格......只是一个额外的列。

一般的经验法则,更少的表格 = 更少的关系你必须担心 = 更少的头痛。

于 2012-08-21T09:18:43.807 回答
-2

如果供应商和用户表都具有互斥的唯一 ID 号,则可以有一个使用该 ID 作为“报告者”的列。

如果它们都具有可能具有重叠值的唯一 ID 号,则可以使用两列作为 ID,例如:

`reporter_id`,
`reporter_type`

其中类型可以是类似su反映表名的值。这也将消除您建议的方法创建的所有那些空值。

最后,如果他们两个表都没有唯一的 ID 号,给他们一个!关于人的数据表使用主键效果更好!

于 2012-08-20T09:39:32.703 回答