Конструирование БД
|
В данном разделе описывается, как создать свою собственную базу знаний. Конструирование базы данныхОбщие замечанияДля создания новой базы данных нужно проделать следующее:
С чего начатьПрежде всего, желательно сделать либо в текстовой, либо - в графической форме план новой базы данных. За основу нужно взять либо другую базу данных, сохраненную прежде в файле, либо совершенно новую пустую базу данных, формирующуюся в памяти при отказе выбрать файл в предлагаемом системой диалоге загрузки. Итак:
Создание классовНовые классы удобней всего создавать, вводя их имена в самой нижней строке (строке ввода) таблицы классов. Там доступна для ввода только одна - первая ячейка. Если таблица классов станет такой большой, что переходить в её конец станет неудобно, можно нажать клавишу Insert в первом столбце после титульного столбца, и затем - ввести имя нового класса в появившемся диалоге вставки нового объекта-сущности Create New. Кстати заметим, что точно так же, как классы, вводятся все новые глобальные сущности. В том числе отношения (т.е. их дескрипторы). Для новых классов следует задать их категорию, что производится нажатием Insert и выбором категории в столбце CAT1. Однако для классов сущностей это делать не обязательно, поскольку категория ITEM, соответствующая сущностям, подразумевается по умолчанию. Однако, может возникнуть вопрос - как попасть в таблицу классов, если после первичной загрузки, (всегда открывающей сначала таблицу классов), мы успели переместиться в другой табличный вид. Для этого проще всего перейти в таблицу отношений (нажав Ctrl-L), и затем нажать Esc. Или проще - много раз нажимать Esc, пока заголовок таблицы не станет ITEMS(CLASS). Формирование системы наследования классовНаследование классов, если оно есть, задается в таблице классов. Если со стороны классов наследников, то в аспекте (в столбце) ISA, а если со стороны предков, то в столбце BASE_FOR. Например, мы завели три класса: Личность, Мужчина, Женщина. И хотим задать два факта наследования ISA(Мужчина,Личность) ISA(Женщина,Личность) для задания такого наследования, мы в столбце ISAдля строчек Мужчина и Женщина поочередно, нажимаем Insert, вызывая список выбора классов, и в этом списке выбираем класс Личность. Если мы всё сделали правильно, то в столбце ISA для классов Мужчина и Женщина появится <Личность>, а в столбце BASE_FORдля класса Личность появится {Женщина,Мужчина}.
Создание отношенийОтношения создаются в таблице отношений, в которую легко попасть отовсюду, нажав Ctrl-L. Чтобы создать отношение, нужно нажать Insert в столбце имен отношений, и затем ввести имя нового отношения в появившемся диалоге Create New. Можно также воспользоваться последней строкой ввода, для ввода новых имен отношений. Конструирование аспектовСоздание аспектов - наиболее сложная и ответственная задача. Для начала нужно войти в таблицу аспектов одного отношения. Для этого нужно
Пусть мы проделали все это для отношения Родитель. Допустим, это отношение определяется следующим образом: Родитель:LINK(Родители:{&Личность},Дети:(&Личность)) Тогда для обоих аспектов нужно ввести домен Личность, нажав Insert в столбце DOMAIN и в появившемся списке классов выбрав Личность. Теперь оба аспекта получили один и тот же класс-домен, а класс Личность получил два новых атрибута. Далее следует указать категорию обоих аспектов. Мы видим, что по принятой системе обозначений аспект Родители - множественный, а аспект Дети - списочный. Зададим это в столбце ATYPE. Для этого нажмем Insert в этом столбце поочередно для обоих аспектов, и выберем для аспекта Родители категорию SET, а для аспекта Дети - категорию LIST. В полученной таблице мы могли бы отметить нажатием Enterв столбце HOLD владеющие аспекты, но мы этого не делаем, т.к. оба аспекта - ссылочные, что указывает знак & в определении аспекта перед доменом Личность. Кроме того, можно также нажатием Enter отметить признак полиморфных аспектов POLY, если мы хотим, чтобы аспекты Родители и/или Дети стали полиморфными, т.е. передаваемыми по наследству от класса Личность его наследникам: классам Мужчина и Женщина. Конструирование ключейРассмотрим для примера, отношение Ведомость, задающее ежемесячные платежные ведомости, в которых отражается, Кто из работников и За какой месяц и Сколько получил. Ведомость:LINK(Кто:{&Личность},За:{&Месяц},Сколько:NUM) Таблица аспектов в этом случае будет выглядеть так. Обратим внимание, что аспект Сколько является владеющим, т.к. число Сколько зависит от этого отношения. Здесь по смыслу аспекты Кто и За образуют ключ, т.к. определенный работник за данный месяц может получить только одну сумму. (Так в нашем примере, а в жизни бывает по-разному). Образуем ключ с именем Вед1, для чего введем это слово в графе SKEY аспекта Кто, а затем нажмем Insert и выберем его в графе SKEY аспекта За. (Можно наоборот). Теперь осталось только привязать новый ключ к самому отношению Ведомость, для чего выйдем из таблицы аспектов в таблицу отношений, нажав Esc, и выберем новый ключ после нажатия Insert в графе LKEY. Ключ создан. Можно вводить ведомости в естественном виде, не опасаясь случайного возникновения дубликатов. Настройка табличного интерфейсаСформированное в предыдущем разделе отношение Ведомость обладает одним недостатком. Дело в том, что в качестве заголовков столбцов в таблицах по умолчанию берутся имена соответствующих аспектов. Имена бинарных аспектов Родители и Дети выбраны удачно в этом смысле и с ними нет проблем. Но для трехместного отношения Ведомость, имена Кто и За понятны, только если на них смотреть со стороны отношения, т.е. в объектном столбце. Но если смотреть со стороны объекта класса Личность, то столбец, озаглавленный Кто, имеет довольно загадочный смысл. Для нас было бы лучше, если бы аспектный столбец, ведущий к полученным некоторым работником суммам, назывался, например, так: Получил. Для этого существует специальный текстовый атрибут аспекта, с названием TITLE. Зададим правильные названия столбцов в таблице аспектов Ведомость. Чтобы попасть туда, нажмем Ctrl-Lи выберем графу LINK_SLOTS этого отношения. Сделав эту косметическую операцию, мы вернемся в таблицу представителей класса Личность, и увидим, что столбцы стали называться более внятно. Теперь, нажав Enter в графе Получил объекта Борис мы увидим, что получал Борис. А, нажав Enter два раза на объекте Май, мы получим Ведомость за Май.
|
|