Вводная:БД (Interbase) с большой вложенностью таблиц (до 10), В таблице порядка 10000 записей.
Код на Delphi
Пожалйуста, поделитесь опытом работы с Вашими базами:
1. генерация ключей и отслеживание связей возложены на
— триггеры
— на клиента
— в отдельной таблице прописаны все связи и через процедуры считывается что делать
2.ссылки на вышестоящую таблицу
-задана ссылка на идентификатор только близлежащей таблицы
-ссылки на идентификаторы всех вышестоящих таблиц
-ссылки на конкретные значения
Интерес с точки зрения бястродействия и наглядности представления данных с точки зрения пользователя
Опыт проектирования близок к 0, а решать надо быстро
Здравствуйте, kio, Вы писали:
kio>Пожалйуста, поделитесь опытом работы с Вашими базами:
kio>1. генерация ключей и отслеживание связей возложены на
kio>- триггеры
kio>- на клиента
kio>- в отдельной таблице прописаны все связи и через процедуры считывается что делать
Для связей существуют FOREIGN KEYS!
Через процедуры и триггеры связи можно отслеживать, если не хочется пользоваться этими ключами.
Это возможно, если ключ строится по полям часто изменяемой таблицы — при каждой вставке/удалении надо проверять целостность с помощью ключа — мочет тормозить вставку/удаление (на 10 тыс. записей не заметишь). Так что этот вариант отпадает.
В общем такой подход применяется для особо извращенных случаев.
kio>2.ссылки на вышестоящую таблицу
kio>-задана ссылка на идентификатор только близлежащей таблицы
kio>-ссылки на идентификаторы всех вышестоящих таблиц
kio>-ссылки на конкретные значения
Это зависит от того, как построены эти близлежащие/вышестоящие таблицы.
kio>Интерес с точки зрения бястродействия и наглядности представления данных с точки зрения пользователя
С точки рения быстродействия ни один из заданных вопросов не принципиален.
С точки зрения наглядности тем более.
kio>Опыт проектирования близок к 0, а решать надо быстро
Не выйдет чтоб и быстро и грамотно и красиво.
P.S.
Если нужна помощь — пиши в мыло. Мыло в профайле.
> Вводная:БД (Interbase) с большой вложенностью таблиц (до 10), В таблице порядка 10000 записей.
> Код на Delphi
> Пожалйуста, поделитесь опытом работы с Вашими базами:
> 1. генерация ключей и отслеживание связей возложены на
> — триггеры
> — на клиента
> — в отдельной таблице прописаны все связи и через процедуры считывается что делать
не работал с Interbase, но ключи зачастую суррогатные (автогенерируемые СУБД, процедурами либо триггерами — зависит от СУБД и потребностей) и простые (то есть состоящие из одного поля небольшого по объему типа, например Integer).
Отслеживание связей — это работа СУБД, тем более что эти сведения могут использоваться оптимизатором при построении плана запроса.
> 2.ссылки на вышестоящую таблицу
> -задана ссылка на идентификатор только близлежащей таблицы
> -ссылки на идентификаторы всех вышестоящих таблиц
> -ссылки на конкретные значения
соответственно, только "ссылка на идентификатор только близлежащей таблицы" за исключением нестандартных случаев
> Интерес с точки зрения бястродействия и наглядности представления данных с точки зрения пользователя
наглядное представление — это точно наличие Foreign keys и нормализация; удобство написания запросов — это точно простые ключи; простота — это автогенерация ключей средствами СУБД, либо триггерами на крайняк, чтобы юзер не помнил, что надо как-то-там еще и ключ сгенерить.
Быстродействие — это дизайн БД и нормализация с минимально-необходимой денормализацией.
Posted via RSDN NNTP Server 1.9
Здравствуйте, kio, Вы писали:
kio>Вводная:БД (Interbase) с большой вложенностью таблиц (до 10), В таблице порядка 10000 записей.
kio>Код на Delphi
kio>Пожалйуста, поделитесь опытом работы с Вашими базами:
kio>1. генерация ключей и отслеживание связей возложены на
kio>- триггеры
kio>- на клиента
kio>- в отдельной таблице прописаны все связи и через процедуры считывается что делать
На триггере beforeInsert. Ключи в этом случае желательно иметь искусственные (типа поле ID). За деталями на
www.ibase.ru. Там есть много статей, в т.ч. на эту тему.
kio>2.ссылки на вышестоящую таблицу
kio>-задана ссылка на идентификатор только близлежащей таблицы
kio>-ссылки на идентификаторы всех вышестоящих таблиц
kio>-ссылки на конкретные значения
Это часом не дереья строятся? На
www.ibase.ru опять-таки есть и про них ...
kio>Интерес с точки зрения бястродействия и наглядности представления данных с точки зрения пользователя
kio>Опыт проектирования близок к 0, а решать надо быстро
Наглядность представления -- это проблема клиентской части, а быстродействия -- это к серверу ... суть вещи ортогональные.