mysql - 如何将单个表链接到两个不同表中的数据?

标签 mysql database-design

我正在竞选公职,并创建了一个网络应用程序来跟踪我对选民家中的敲门声。该数据库包含一个名为voters 的表,其中包含有关我的社区中选民的所有必要信息。

我想添加一项新功能来跟踪我的事件的捐助者。并非所有这些捐助者都住在社区,也不在我竞选公职的地区投票。我不需要像跟踪选民那样跟踪这些人的相同类型的信息,因此我将把这些人放入名为 nonvoters 的表中。

现在,我的“选民”表中的个人也可以捐款,我也想跟踪这些捐款。

为了跟踪选民和非投票者的捐款,我想建立一个名为“捐款”的新表。该表将包含有关捐赠的适当详细信息。

但我不确定将donations表链接到“voters”和“nonvoters”表的最佳结构是什么。如果我在表中创建一个名为 voter_id 的列来将其键入捐助者信息,则无法知道该 ID 引用的是哪个表。那么,我是否需要设置两列:nonvoter_idvoter_id,并根据捐赠者是否是选民将 ID 插入到适用的列中?这看起来很奇怪。

或者,我可以在 votersnonvoters 表中创建一个名为 donor_id 的列,我可以用它来链接捐款中的数据 table 。如果我走这条路,似乎我必须做一些幕后工作,以确保捐赠者 ID 是唯一的,并且与捐赠表中的数据相关。

或者也许还有其他我不熟悉的方法。任何指导表示赞赏。

最佳答案

我会为选民和非选民(比如说个人)使用一张表。您可以在人员表中设置一个标志,指示该人是否是选民,或者您甚至可以从他们的地址中获取此信息(如果可能的话)。

我将创建一个捐赠表,并使用人员表中的 ID 将每笔捐赠链接到人员表中的一个人(或多个人)。如果捐款可以由多人提供,那么您将需要第三个连接表,其中人员 ID 和捐款 ID 作为 2 个字段。这 2 个字段将成为连接表的主键。

关于mysql - 如何将单个表链接到两个不同表中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33098565/

相关文章:

mysql - 仅在检查另一表的值后更新另一表

php - 如何在 bootstrap 缩略图 3 列 View 中显示数据库中的图像?

php - 访问关联数组 php pdo 时出现问题

sql - ON 子句中的列是否需要索引?

mysql - 电子商务产品商店组合的多表与一表

mysql - 为什么我的 SQL 语句会抛出语法错误?

python - MySQL 参数化查询

mysql - 数据库引用表

数据库效率

MySQL:数据库查询不正确或结构错误?