【发布时间】:2012-01-07 02:21:25
【问题描述】:
我正在寻找处理删除三个 PostgreSQL 表中链接数据的最佳方法(技术上更多,但想法相同)。
这三个表是机构、地址和机构地址。一个机构可以有多个地址,因此机构地址只是一个链接表,有两列,机构 ID 和地址 ID(定义为它们各自的外键)
我想设置它,以便在删除代理时,它会自动删除代理地址中的链接表行和相关的地址行。 (所以如果一个机构被删除,它的所有地址也会被删除)
我可以得到它来清除链接表,但不知道如何到达地址表。
(另外,地址是一个通用模型,会被其他人引用,比如一个有自己的链接表的“站点”。)
【问题讨论】:
-
您的描述自相矛盾:如果地址为
will be referenced by others,那么您不应将代理上的删除级联到所有链接地址。他们可以与其他人(机构?)联系起来。 -
对不起,地址表(对象)本身会被其他对象使用。就像一个站点会使用存储在地址表中的地址,但它是唯一的。我们不允许两种不同的事物使用相同的地址,无论是两个以上的代理机构、一个网站和一个代理机构,还是两个以上的网站。
标签: postgresql database-design cascading-deletes