Я не знаю, как WPs библиотека построена, но с открытым исходным кодом, вы можете взглянуть.
Что касается структуры таблицы, если вы хотите связать многие-ко-многим вы хотите перекрестную таблицу ссылок, что-то вроде:
record_id (int)
media_id (int)
title (text)
caption (text)
rank (int)
Затем стол СМИ будет что-то вроде:
id (int)
title (text)
caption (text)
filename (text)
type (image|multimedia|document)
Может быть, вы бы также добавить folder_id поле в таблице медиа, или, возможно, вместо этого вы хотите маркировать, в этом случае у вас есть третий стол с media_id и тег в виде полей (или у вас есть теги, как разделенные запятыми в средствах массовой информации ta BLE).
Это позволит вам связать один носитель с несколькими элементами и одним элементом на нескольких носителях. Это позволит вам установить заголовок и подпись для элемента мультимедиа и переопределить его для определенной ссылки. Например, у вас есть фотография дома с надписью, чей дом это, но в одной ссылке надпись переписывается (в перекрестной справочной таблице) с текстом, говорящим, как этот дом является примером определенной архитектуры. SQL coalesce функция пригодится для получения правильного названия и заголовка.
Если контент, который ссылается на носитель, поступает из нескольких таблиц, скажем, что у вас есть таблица под названием «штат», а другая называется «продукты», и они могут ссылаться на носитель, тогда в таблице перекрестных ссылок также должно быть table_name поле. Поле типа - это то, что вы можете легко получить только мультимедийные файлы, прикрепленные к записи, или только изображения; вы можете подсчитать, сколько документов прилагается, сколько изображений и т. д., основываясь на этом имени файла при каждом запросе, означает, что у вас более медленные запросы.
Одна вещь, которая не совсем удовлетворяет, - это размещение СМИ вне сайта. Если вы используете «Amazon S3» для хранения этих изображений, поле «filename» на самом деле будет URL-адресом для изображения. Я просто снимаю это там, как что-то, что нужно учитывать при разработке медиа-библиотеки.
Я не могу придумать какую-либо литературу или код, который вы можете скопировать-вставить, хотя это не сложно, хотя я понимаю, что это может занять много времени.
Удачи.