Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > База, расширяемая в обе стороны


Автор: Guest45 28.2.2017, 05:12
Как сделать такую таблицу, чтобы ее можно было расширять "в обе стороны": то есть добавлять как строки (записи), так и столбцы?


Что представляют собой данные.
Каждая запись- это предмет, обладающий рядом признаков.
Столбцы это битовые поля: есть данный признак у данного предмета, или нет.

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

Подскажите, как бы получше сделать такую базу?

MS ACCESS позволяет добавлять в таблицу новые столбцы. Но до какой степени? Если их окажется тысяч несколько? Не рухнет ли всё это дело?
Обидно будет потерять после огромную работу, если на каком-то этапе база сделается неработоспособной (вбиваться будет в ручную). Лучше подумать заранее об оптимальной структуре.

Удаление записей и столбцов не предполагается (только на этапе начальной отладки).

Будет делаться на Access2000.

Автор: Akina 28.2.2017, 07:43
Цитата(Guest45 @  28.2.2017,  06:12 Найти цитируемый пост)
как бы получше сделать такую базу?

Почитать про EAV.

Цитата(Guest45 @  28.2.2017,  06:12 Найти цитируемый пост)
MS ACCESS позволяет добавлять в таблицу новые столбцы. Но до какой степени?

254. Причём это с учётом удалённых после последнего сжатия БД.

Цитата(Guest45 @  28.2.2017,  06:12 Найти цитируемый пост)
Столбцы это битовые поля: есть данный признак у данного предмета, или нет.

Ну так и используйте блобы.

Автор: Guest45 28.2.2017, 09:15
Спасибо за ответ!

А блобы это что? Сорь за невежество.
А про EAV Гугль отсылает к антивирусам. (Явно не в тему)


Автор: Akina 28.2.2017, 11:17
Цитата(Guest45 @  28.2.2017,  10:15 Найти цитируемый пост)
блобы это что?

https://ru.wikipedia.org/wiki/BLOB
В Access в старых терминах это "поле МЕМО", в новых - "длинный текст".

Цитата(Guest45 @  28.2.2017,  10:15 Найти цитируемый пост)
про EAV Гугль отсылает к антивирусам

У тебя какой-то неправильный гугль... может. версия старая? у меня первая же ссылка - https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model.

Автор: Guest45 28.2.2017, 17:55
Цитата(Akina @ 28.2.2017,  11:17)
это "поле МЕМО" 
 А; это (если я правильно понимаю мысль) предлагается организовать строку для хранения, и потом выловить из нее нужные биты?
Вариант технически возможный,  но тогда к чему СУБД; обыкновенный двумерный массив в VB6 решит задачу.

Цитата(Akina @ 28.2.2017,  11:17)
 У тебя какой-то неправильный гугль... может. версия старая? 
 Не-а; просто я искал объяснение по-русски.

Автор: Akina 28.2.2017, 18:45
Цитата(Guest45 @  28.2.2017,  18:55 Найти цитируемый пост)
обыкновенный двумерный массив в VB6 решит задачу.

Если хранение и обработку проще организовать так - почему бы нет? особенно если массив данных невелик... 
Но, как я понимаю, вопрос ставился немного иначе.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)