引用2个不同表的列

时间:2011-10-29 09:30:22

标签: mysql sql

以下架构:

archivebox (id, mediatype_id)
mediatype (id, name)
archivebox_records (id, archiveboxId, recordId)
picture (id,name)
print (id,name)

应该引用recordId是pictureId还是printId。怎么可能解决这个问题?我使用mysql。

谢谢!

2 个答案:

答案 0 :(得分:1)

最好在设计中明确表达。这将涉及创建两个表archive_picturesarchive_prints,其中包含与各个表的外键关系。

如果确实不想沿着那条路走下去,请尝试在archive_records表中添加某种记录指示符,例如

ALTER TABLE `archive_records` ADD `record_type` ENUM('picture', 'print') NOT NULL;

然后,您可以根据此指标创建查询

SELECT p.name FROM picture p
INNER JOIN archive_records ar
    ON ar.record_type = 'picture' AND p.id = ar.recordId

答案 1 :(得分:1)

另一个 clean 解决方案是将pictureprint合并到

medium( id, name, type)

其中type可以是"print""picture",或者当数据模型增长引用包含允许值的表的外键时。