У меня есть приложение, привязанное к базе данных.В базе данных есть таблица Objects:
Table1: Objects (ID, ObjectName)
Конечный пользователь должен иметь возможность создавать различные объекты с разными атрибутами (заранее я не знаю,номер и имя различных атрибутов, но все они одного типа. Допустим, varchar2).
На стороне базы данных это организовано в отдельной таблице следующим образом:
Table2: ObjectAttributes (ID, ObjectID, AttributeName, AttributeValue)
(Поле ObjectID является внешним ключом, связанным с таблицей Objects)
На стороне приложения я представляю данные, как будто объектвсе его атрибуты находятся в одной таблице с сводным представлением:
Представление: ObjectsAndAttribute (ID, ObjectName, AttributeName1, AttributeName2, ...)
Это представление создается с использованием сводного запроса,Работает довольно хорошо при отображении данных.Но когда пользователь хочет создать новый объект, отредактировать или удалить объект в элементе управления сеткой, например, это кошмар.
- В случае редактирования, я должен вручную редактировать две таблицы ...
- В случае вставки, я должен сначала вставить данные в таблицу Objects, затем ObjectAttributes (потому чтоограничения внешнего ключа)
- В случае удаления мне нужно сначала удалить данные в ObjectsAttributes, затем Objects (из-за ограничения внешнего ключа)
Я сделал все этоно код очень длинный и не очень надежный.
Мой вопрос: кто-нибудь знает, возможно ли вставить / отредактировать / удалить данные в сводном запросе ObjectsAndAttribute и oracle будет обрабатывать соответствующие операции в разных таблицах?
Или кто-нибудьзнаете о любой другой реализации, пожалуйста?
Спасибо.Cheers,