以下架构:
archivebox (id, mediatype_id)
mediatype (id, name)
archivebox_records (id, archiveboxId, recordId)
picture (id,name)
print (id,name)
应该引用recordId是pictureId还是printId。怎么可能解决这个问题?我使用mysql。
谢谢!
答案 0 :(得分:1)
最好在设计中明确表达。这将涉及创建两个表archive_pictures
和archive_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 解决方案是将picture
和print
合并到
medium( id, name, type)
其中type
可以是"print"
或"picture"
,或者当数据模型增长引用包含允许值的表的外键时。