Предпочтительный способ сопоставления кода с записями базы данных, созданными пользователем - PullRequest
2 голосов
/ 02 декабря 2008

Я пытаюсь определить лучшую модель базы данных для текущей настройки:

Администратор может создавать «продукты клиента». Это означает услуги / продукты, к которым клиент может прикрепить / подписаться. Простые случаи, когда продукт просто стоит своей цены, или подписка на продукт должна отправить электронное письмо, легко смоделировать в базе данных.

Но как насчет очень специфического внутреннего кода для продукта клиента? Например, один продукт может иметь очень специфический код, реализованный для проверки статуса клиента в другой базе данных. Как я могу отобразить эту связь в базе данных, чтобы я мог включить / выключить некоторый код на основе настроек продукта.

Мой интуитивно понятный способ работы с этим состоял бы в том, чтобы в таблице CustomerProducts имелся строковый столбец, в котором можно было бы задать предопределенный набор строк, например, «MyCustomCodeHandler», а затем код проверяет наличие этой строки, чтобы выполнить ее. Но для меня это не похоже на реальные отношения между базой данных и кодом.

1 Ответ

1 голос
/ 02 декабря 2008

Данные - это данные, а код - это код. Я бы не рекомендовал хранить код в базе данных.

Если вам нужно разрешить клиентам создавать типы продуктов (в объектно-ориентированном смысле «типы») со связанным кодом, я бы решил развернуть этот код так же, как вы развертываете другой код.

Пользовательский код может также ссылаться на пользовательские данные, хранящиеся в базе данных. Я бы решил создать зависимую таблицу для каждого подтипа продукта и поместить туда столбцы для конкретного типа. Отношение между этой таблицей подтипов и общей таблицей продуктов однозначно. Таким образом, первичный ключ в таблице подтипов также является внешним ключом для общей таблицы продуктов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...