Как обеспечить ссылочную целостность при наследовании одной таблицы?

Я читал некоторые из ответов Билла Карвина о наследовании одной таблицы и думаю, что этот подход был бы хорош для той установки, которую я рассматриваю :

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)

enter image description here

13
задан Community 23 May 2017 в 12:34
поделиться