Я читал некоторые из ответов Билла Карвина о наследовании одной таблицы и думаю, что этот подход был бы хорош для той установки, которую я рассматриваю :
Playlist
--------
id AUTO_INCREMENT
title
TeamPlaylist
------------
id REFERENCES Playlist.id
teamId REFERENCES Team.id
UserPlaylist
------------
id REFERENCES Playlist.id
userId REFERENCES User.id
PlaylistVideo
-------------
id
playlistId REFERENCES Playlist.id
videoId REFERENCES Video.id
. Все параметры CASCADE
установлены на DELETE
, что будет правильно работать при удалении Playlist
, однако что произойдет, если User
или Team
будут удалены?
т.е. Если User
удален, строки в UserPlaylist
будут удалены, но строки, на которые есть ссылки в Playlist
и PlaylistVideo
, останутся. Я думал о том, чтобы применить это как TRIGGER AFTER DELETE
, но нет способа узнать, возник ли запрос на удаление из-за того, что Playlist
был удален, или из-за того, что User
был удален.
Каков наилучший способ обеспечить целостность в этой ситуации?
Редактировать (Предоставляется ERD)