列下面的模式:引用的2頁不同的表
archivebox (id, mediatype_id)
mediatype (id, name)
archivebox_records (id, archiveboxId, recordId)
picture (id,name)
print (id,name)
的recordId應參考是否pictureId或printId。怎麼可能解決這個問題?我使用mysql工作。
謝謝!
列下面的模式:引用的2頁不同的表
archivebox (id, mediatype_id)
mediatype (id, name)
archivebox_records (id, archiveboxId, recordId)
picture (id,name)
print (id,name)
的recordId應參考是否pictureId或printId。怎麼可能解決這個問題?我使用mysql工作。
謝謝!
在你的設計中總是最好的。這將涉及創建兩個表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
如果拆分'archivebox_records'表不是選項,我寧願將'recordId'列拆分爲'pictureId'&'printId'而不是添加'record_type'。這樣我可以定義引用相應表的外鍵。 –
我會將記錄表分成arcivebox_prints和arcivebox_films。像record_type這樣的指標不能解決從recordId到printId和filmId的forein關鍵引用的問題。 – Anatoliy