Проектирование БД
От: kio  
Дата: 26.09.05 13:29
Оценка:
Вводная:БД (Interbase) с большой вложенностью таблиц (до 10), В таблице порядка 10000 записей.
Код на Delphi
Пожалйуста, поделитесь опытом работы с Вашими базами:
1. генерация ключей и отслеживание связей возложены на
— триггеры
— на клиента
— в отдельной таблице прописаны все связи и через процедуры считывается что делать
2.ссылки на вышестоящую таблицу
-задана ссылка на идентификатор только близлежащей таблицы
-ссылки на идентификаторы всех вышестоящих таблиц
-ссылки на конкретные значения
Интерес с точки зрения бястродействия и наглядности представления данных с точки зрения пользователя
Опыт проектирования близок к 0, а решать надо быстро
Re: Проектирование БД
От: kavlad Россия http://www.wavesoft.ru
Дата: 26.09.05 13:38
Оценка:
Здравствуйте, kio, Вы писали:

kio>Пожалйуста, поделитесь опытом работы с Вашими базами:

kio>1. генерация ключей и отслеживание связей возложены на
kio>- триггеры
kio>- на клиента
kio>- в отдельной таблице прописаны все связи и через процедуры считывается что делать

Для связей существуют FOREIGN KEYS!

Через процедуры и триггеры связи можно отслеживать, если не хочется пользоваться этими ключами.
Это возможно, если ключ строится по полям часто изменяемой таблицы — при каждой вставке/удалении надо проверять целостность с помощью ключа — мочет тормозить вставку/удаление (на 10 тыс. записей не заметишь). Так что этот вариант отпадает.
В общем такой подход применяется для особо извращенных случаев.

kio>2.ссылки на вышестоящую таблицу

kio>-задана ссылка на идентификатор только близлежащей таблицы
kio>-ссылки на идентификаторы всех вышестоящих таблиц
kio>-ссылки на конкретные значения

Это зависит от того, как построены эти близлежащие/вышестоящие таблицы.

kio>Интерес с точки зрения бястродействия и наглядности представления данных с точки зрения пользователя


С точки рения быстродействия ни один из заданных вопросов не принципиален.
С точки зрения наглядности тем более.

kio>Опыт проектирования близок к 0, а решать надо быстро


Не выйдет чтоб и быстро и грамотно и красиво.

P.S.
Если нужна помощь — пиши в мыло. Мыло в профайле.
Распознавание изображений на Delphi http://dfreader.sourceforge.net
Re: Проектирование БД
От: Козьма Прутков Россия  
Дата: 26.09.05 13:48
Оценка:
> Вводная:БД (Interbase) с большой вложенностью таблиц (до 10), В таблице порядка 10000 записей.
> Код на Delphi
> Пожалйуста, поделитесь опытом работы с Вашими базами:
> 1. генерация ключей и отслеживание связей возложены на
> — триггеры
> — на клиента
> — в отдельной таблице прописаны все связи и через процедуры считывается что делать
не работал с Interbase, но ключи зачастую суррогатные (автогенерируемые СУБД, процедурами либо триггерами — зависит от СУБД и потребностей) и простые (то есть состоящие из одного поля небольшого по объему типа, например Integer).
Отслеживание связей — это работа СУБД, тем более что эти сведения могут использоваться оптимизатором при построении плана запроса.

> 2.ссылки на вышестоящую таблицу

> -задана ссылка на идентификатор только близлежащей таблицы
> -ссылки на идентификаторы всех вышестоящих таблиц
> -ссылки на конкретные значения
соответственно, только "ссылка на идентификатор только близлежащей таблицы" за исключением нестандартных случаев

> Интерес с точки зрения бястродействия и наглядности представления данных с точки зрения пользователя

наглядное представление — это точно наличие Foreign keys и нормализация; удобство написания запросов — это точно простые ключи; простота — это автогенерация ключей средствами СУБД, либо триггерами на крайняк, чтобы юзер не помнил, что надо как-то-там еще и ключ сгенерить.
Быстродействие — это дизайн БД и нормализация с минимально-необходимой денормализацией.
Posted via RSDN NNTP Server 1.9
Да хранит вас господь в сухом прохладном месте...
Re: Проектирование БД
От: byur Россия http://yurybuluy.blogspot.com/
Дата: 26.09.05 14:05
Оценка:
Здравствуйте, 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, а решать надо быстро

Наглядность представления -- это проблема клиентской части, а быстродействия -- это к серверу ... суть вещи ортогональные.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.