Помогите с проектированием
От: aleyush Россия  
Дата: 24.04.05 15:02
Оценка:
Всем привет!

Здесь
Автор: aleyush
Дата: 23.04.05
, как мне кажется, я изложил вопрос несколько туманно. Поэтому попробую сделать это еще раз, немножко добавив конкретики и переставив акценты.
Повторюсь, что проект (во всяком случае, на данном этапе) носит научно-исследовательский характер.
Постарался не размениваться на детали, а изложить суть, хоть это и непросто.


Итак, есть анализируемые объекты — столбцы реляционной базы данных (на первом этапе — одной базы SQL2000). Назовем эти объекты Column.

Каждая Column характеризуется набором "обощенных типов", или значений (Meaning).
Для каждой Column существует не одно, а целый набор Meaning.
Трактовка: один Meannig (самый общий, просто "Данные") есть всегда, но дальше он может быть конкретизирован. Например, данные могут быть числами или строками, числа могут быть целыми, положительными и т.д. Это не дерево, так как в общем случае в процессе такой конкретизации можно прийти к одному и тому же Meaning различными способами. То есть, получается оринтированный граф. В нем не будет циклов, так как каждая конкретизация накладывает дополнительные более жесткие условия на данные.
Дополнение: Meaning может быть значением не только столбца, но и набора столбцов. Самый простой пример: дата может содержаться как в одном Column, так и в трех (отдельно день, месяц, год).

Для каждого Column могут быть вычислены некоторые свойства (Properties).
Вычисление — некоторая функция на c#, обращающаяся к данным в самой базе.
Не любое Property может быть вычислено для любого Column: например, найти минимум можно только для числовых столбцов, а среднее количество слов — только для текстовой строки.
Таким образом, возможность вычислить Property характеризуется Meaning. Не для каждого Meaning можно вычислить конкретное Property. Но если для какого-то можно, то можно и для всех его "конкретизаций".

И, наконец, есть "функции конкретизации" Meaning.
Такая функция задается для пары (Meaning1, Meaning2). На входе Column, имеющая значение Meaning1, на выходе бинарное значение — имеет ли она значение Meaning2. (Вычисление может проходить как с использованием значений Properties для данного Column, так и без них, по каким-то независимым алгоритмам.)
Для заданной пары (Meaning1, Meaning2) таких функций может быть несколько — тогда они складываются логическим или.


Все три описанных выше компонента должны быть расширяемыми — то есть, возможность добавлять новые Meaning, новые Properties с функциями их нахождения и новые функции перехода.
В идеале — в виде плагинов (с некоторым "контролем целостности", чтобы не было, например, определено функции конкретизации не существующего Meaning).


Помогите, пожалуйста, с составлением объектной модели.
... << RSDN@Home 1.1.4 beta 6 rev. 422>>
---
Александр Ющенко
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.