Мс-Доступ МБД:Разделить поле «Мемо» на несколько текстовых полей.(Во избежание повреждения данных)

StackOverflow https://stackoverflow.com/questions/826668

Вопрос

Я использую базу данных Access, используемую в качестве серверной части.
Я использую несколько полей для заметок.

Я узнал, что поля Memo могут привести к повреждению базы данных, поскольку они хранятся на отдельной странице данных;запись содержит только указатель на страницу данных, где хранятся фактические данные.

Большую часть времени мне просто нужно от 100 до 1000 символов или около того, поэтому у меня возникла идея...
Моя «блестящая» (или нет) идея заключалась в том, чтобы разделить заметку на 4 или 5 текстовых полей (каждое из них может содержать 255 символов).

Кто-нибудь делал это раньше?
Есть ли известные проблемы?
Будет ли этот подход менее подвержен повреждению данных?

Спасибо,
Зубец

P.S.
1.Раньше у меня были проблемы с коррупцией.
2.Я знаю, что лучше всего было бы перейти на другую серверную часть, но это невозможно.

Это было полезно?

Решение

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

Также вам следует рассмотреть почему ваша база данных повреждает указатели заметок.Помимо приведенного выше предложения, вам, вероятно, следует рассмотреть возможность редактирования ваших заметок без привязки, хотя, поскольку кажется, что вы не используете интерфейс Access для вашего Jet MDB, это, вероятно, не является проблемой.Время от времени я наблюдаю повреждение заметок, но не очень часто.Если вы видите это часто, это говорит мне о том, что ваше приложение плохо спроектировано или ваша операционная среда явно не соответствует стандартам.

Другие советы

Похоже, вы хотите взять существующее поле заметки и разрезать его перед помещением в базу данных, а затем снова склеить, когда вам нужно его отобразить.

Я думаю, что если ты попробуешь это, тебя ждет огромная боль.Я бы постарался изменить серверную часть, если бы это был ваш единственный вариант :)

Я буду опираться на ответ DWF, предложив сделать что-то вроде того, что вы предлагали.Создайте таблицу 1:N (я назову ее UserNotes) с текстовым полем (а не заметками, с которыми у вас, похоже, проблемы).

Затем создайте подчиненную форму с UserNotes в качестве источника записей и замените поле памятки подчиненной формой UserNotes.Это позволяет пользователю решать, где находятся разрывы строк/абзацев в контексте текстового поля длиной 255 символов.(для конвертации вам все равно придется нарезать заметки, но это всего лишь одноразовая операция)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top