Я работаю над проектом, который сохранит много типов объектов в базу данных.К ним относятся: статьи, опросы, писатели и т. Д. Некоторые из них мне неизвестны во время разработки, поэтому я пытаюсь создать общую схему таблиц, которая позволит мне сохранять элементы любого типа в этой базе данных.
Мой дизайн
Объект таблицы
objectID int
title varchar
body text
type int #will represent the ID of the type of object am inserting
Учитывая эти обстоятельства или требования, возможно, потребуются дополнительные данные, я решил, что это пойдет к тому, что я называю"метаданные объекта" следующие:
Таблица Object_MetaData
metaID int
metaKey varchar
metaIntKey int #representing an integer value of metaKey which is calculated using some algorithm to speed up queries
metaValue varchar(1000)
Я делаю всю работу в PHP и MySQL, кстати.
ПараЧто мне пришло в голову, когда я делал этот проект относительно производительности базы данных в долгосрочной перспективе:
1) Сохраняет ли int, boolean, small text, big text в metaValue эффективность?
2) в долгосрочной перспективе таблица метаданных будет расти довольно быстро.Это кошмар обслуживания?Как MySQL собирается справиться с этим?
3) В php при извлечении объектов мне придется зацикливать каждый объект для извлечения его метаданных или загружать все метаданные один раз, используя ленивую загрузку, или загружать любой отдельный метаключ один раз, когда егозапрашивается с помощью метода __get magic.Таким образом, при получении списка, скажем, 50 объектов, по крайней мере 50 операторов выбора будут выполняться при использовании любого из предложенных мной методов.Есть ли лучший, более эффективный способ сделать это?
Любые мысли или комментарии по этому проекту приветствуются.