[bd Access] - ламовопрос об объеме

loks-po

Есть база данных Accesss. Она ведется программно (делфа). Но пока все работает не как я хочу, я периодически открываю этот же файл самим MSAccess и удаляю все записи (две связанные таблицы). Не сомотря на то, что я их удаляю, размер самого файла меньше не становится. Был 160к, сейчас (после пяти-шести таких циклов записи-стирания) он весит более 400.
Вопрос: что это такое?

Realist

Сразу говорю, точно не знаю
Мб тебя спасет сервис -> служебные программы -> сжать и восстановить базу?
Скорей всего тебя спасет удаление таблицы и ее пересоздание
В Оракле такой эффект есть. Там при удалении записи только помечаются как удаленные. Это потом может вызывать тормоза

loks-po

только помечаются как удаленные
Ну это конечно было первой догадкой... (а то с чего бы ей пухнуть... но с другой стороны: тогда зачем выставлять мне пафосные окошки с сообщением о том, что "восстановление будет невозможно. ПРодолжить?".
И еще вопрос по этой же теме: как я уже сказал - там две таблицы, связанные. Соответственно, во второй есть поле (допустим LinkKey) для связи - индексированное, с возможностью совпедений, числовое. Если данные нигде не отображаются, то думать о соответствии этого LinkKey (в подчиненной таблице) и соответствующего ему ключевого поля главной таблицы нужно программно? (т.е. соответствующее поле DataSource - которое устанавливает связи - нужно только для правильного отображения связанных данных и правильного ввода?)

Realist

Думаю, что не понял вопроса.
Я думаю, что думать аппаратно у тебя не получится . Или какие варианты?
Тебя интересует, зачем используется внешний ключ в таблице, если он нигде не отображается для пользователя?
Или что?
ЗЫ Не могу назвать себя спецом по Access

12345

Афтор, пишы попрощэ без оборотов.
Я тоже нихуйа не понял.

loks-po

Без оборотов:
1. Существует база данных - mdb.
2. Ведется она программой, а просматривается в MSAccess
По этой части вопрос яснее ясного: почему размер файла увеличивается, хотя после каждого цикла заполнения таблиц из программы, я удаляю все записи вручную из аксесс.
3. База данных состоит из двух таблиц. Для связи в главной есть поле Key, а в подчиненной Linkkey.
До этого момента я имел дело только с программами, в которых данные в связанные таблицы вносились вручную - в средства визуализации данных (допустим, в сеточку). При этом подчиненность данных контролировалась автоматически (никаких лишних движений для того, чтьобы много записей подчиненной таблицы имели поле Linkkey равное полю key главной таблицы я не совершал).
Вопрос: происходит ли этот контроль на уровне компонентов DataSource или только когда есть средства представления данных (сеточка, поле ввода и т.п.).

Realist

1) На первый вопрос я ответил все, что знал
2) Ты заносишь программно в главную таблицу строку
Заносишь в подчиненную таблицу строку, где linkkey = key строки в главной таблице.
Больше ничего не надо.
Ограничение foreign key значит, что в значение поля в подчиненной таблице равно значнию поля некоторой записи в главной таблице. Если ты это соблел, то больше ничего не надо.
Если не соблел, то БД просто не добавит строку, которая это нарушает, и вернет ошибку.
Стредства представления данных из общих сообращений не должны заниматься логикой этих данных.
Надеюсь, я тоже ответил без оборотов.
BTW не рюхаю Access

12345

Вопрос: происходит ли этот контроль на уровне компонентов DataSource или только когда есть средства представления данных (сеточка, поле ввода и т.п.).
Сеточка и поле ввода ну никак не осуществляют логику самих баз данных, это лишь средство представления данных, что хочешь получить из базы данных, то и получишь.

loks-po

Всем спасибо! Ответ исчерпывающий.
Тепу прошу убить.
Оставить комментарий
Имя или ник:
Комментарий: