Мне нужно создать таблицу Key/value в моей базе данных, и я ищу руководство для наилучшего способа сделать это. В принципе, мне нужно уметь сопоставлять значения с динамическим набором именованных свойств и применять их к внешнему ключу.
Операции, которые мне нужно поддерживать:
- Применить пару ключ/значение к группе элементов
- Перечислить все активные клавиши
- Определите все элементы, которые имеют значение для заданного ключа
- Определить все элементы, в которых значение, связанное с заданным ключом, соответствует некоторым критериям.
Кажется, что самый простой способ сделать это - определить таблицу:
CREATE TABLE KeyValue (
id int,
Key varchar...,
Value varchar...
);
Похоже, что я, вероятно, дублирую много данных в столбце Key, потому что я могу указать какой-либо данный ключ для большого количества документов. Замена ключа varchar на целочисленный поиск в другой таблице, по-видимому, облегчает эту проблему (и делает ее значительно более эффективной для перечисления всех активных ключей), но вызывает у меня проблему сохранения этой таблицы поиска (восходящей в нее всякий раз, когда я хочу для определения свойства и потенциального удаления записи в любое время, когда ключ/значение очищается).
Какой лучший способ сделать это?