Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 65

Нужны советы по проектированию Базы данных в Access!

02.04.2019, 23:15. Показов 2318. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Имеется таблица 1, содержащая следующие поля:

1. № п/п
2. ФИО
3. Отдел
4. Заводской номер планшета
5. Планшет поврежден (логическое поле- да/нет)
6. Сотрудник уволен (логическое поле - да/нет)
7. Сотрудник в декрете (логическое поле - да/нет)

И таблица № 2:

1. № п/п
2. ФИО
3. Отдел
4. Заводской номер планшета
5. Планшет поврежден (логическое поле- да/нет)
6. Сотрудник уволен (логическое поле - да/нет)
7. Сотрудник в декрете (логическое поле - да/нет)
8. Дата изменений
9. Примечание

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

При изменении или добавлении данных в любом поле таблицы, измененное поля или добавленное поле автоматически добавляются новой строкой в аналогичную архивную таблицу, с автоматическим проставлением даты изменений. Реализовано это с помощью именованных макросов в Access.

Вроде бы все работает и по архивной таблице, используя фильтры, можно просмотреть все изменения, касаемые данного планшета или сотрудника. Но: когда заполняешь первую таблицу и ,случайно, кликнешь мышью не в том месте, строка, которую заполнили не до конца, добавляется в архивную (таблицу № 2) и при дальнейшем редактировании исходной строки таблицы №1 - она также добавляется в архивную таблицу № 2 и в результате в таблице № 2 появляются ненужные дублирующиеся строки.

1 вопрос: Как сделать так, чтобы данные добавлялись в архивную через кнопку "внести изменения"? Возможно ли это при условии использования именованных макросов (события после добавления или изменения).

2 вопрос: Знающие люди подсказали,что структура таблицы у меня неправильная, что нужно вместо одной таблицы №1 создать несколько связанных таблиц. В общем подскажите, пожалуйста, опираясь на свой опыт, как бы вы спроектировали данную базу?

3 вопрос: Есть ли смысл перейти для создания данной базы перейти на другую СУБД, например, MySQl?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.04.2019, 23:15
Ответы с готовыми решениями:

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

Курсовой проект по проектированию базы данных в СУБД Assecc
Создал базу даных для курсового проектирвоания Тема "агентство недвижимости" Но, возможно, она слишком простая. Помогите с...

Класс редактирования данных. Нужны советы по реализации
Есть задача: написать класс, позволяющий редактировать данные в памяти. Указатель на данные и их начальный размер передаются в конструктор....

20
431 / 239 / 86
Регистрация: 09.04.2018
Сообщений: 1,023
03.04.2019, 07:05
AEvgeniyev,

По сути у вас одни и те же данные в двух таблицах.

Я бы сделал так:

Таблица 1.
0.Счетчик
1. № п/п
2. ФИО
3. Отдел
4. Сотрудник статус(уволен, в декрете, работает и т.д.)

И таблица № 2:

0. Счетчик
1. № п/п
2. Внешний ключ для связи с первой таблицей (1-к-М)
4. Заводской номер планшета
5. Планшет статус (поврежден, в работе, в ремонте, на складе)
6. Дата изменений
7. Примечание

Т.е. мы видим какие планшеты были у сотрудников. Но можно и поменять их местами, сделать планшеты основной, а сотрудников подчиненной.
Ну и таблицы справочники.
0
 Аватар для VinniPuh
9127 / 6129 / 593
Регистрация: 27.03.2013
Сообщений: 19,972
03.04.2019, 07:16
Тут наверное нужна ещё 3-я (промежуточная) подчинённая к планшету и сотруднику табличка, типа - статус планшета, ибо раз есть даты, то они могут менятьс и всегда можно проверить историю, планшет может передаваться от одного сотрудника другому, ломаться и даже по непроверенным слухам - ремонтироваться или заменяться детальки.
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
03.04.2019, 09:04
Третья - РаспределениеПланшетов логичнее назвать.

Для чего в таблицах номер по порядку? В Акцессе в таблицах записи не идут по какому-либо порядку, это не Эксель.

Порядки нужно делать в отчётах, запросах, выводе в эксель, возможно формах и т.д.
0
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 65
03.04.2019, 09:11  [ТС]
Номер по порядку я уберу)
А как правильно сделать именно архивную таблицу, наверное это будет таблица 3, отображающую историю или стутс планшета и т.д, чтобы по ней в любой момент времени можно было посмотреть какие планшеты у какого сотрудника были раньше или статусы планшета раньше и т.д. Как такие таблицы обычно делаются? У меня просто нет опыта в создании архивных таблиц. При этом хотелось бы, чтобы обновления в архивной таблице были автоматическими.
0
 Аватар для VinniPuh
9127 / 6129 / 593
Регистрация: 27.03.2013
Сообщений: 19,972
03.04.2019, 09:40
Таблицы не обновляют, их дополняют новыми записями.
А динамически обновлять можно запросы, созданные на основе таблицы или нескольких таблиц, в которых можно сортировать и отсеивать не нужное фильтрами и оставляя нужное с расчетами и прочими статистическими данными.
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
04.04.2019, 03:13
Цитата Сообщение от AEvgeniyev Посмотреть сообщение
У меня просто нет опыта в создании архивных таблиц.
У меня тоже нет опыта в создании архивных таблиц. Хотя уже 11 лет в Акцессе
Может потому что не существует таких таблиц? У вас есть справочник Люди и справочник Железки, создайте таблицу фактов и обзовите её РаспределениеЖелезок, в ней указывайте кодЛюдя и кодЖелезки, дату выдачи, дату приёма, статус и т.д.
0
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 65
04.04.2019, 13:17  [ТС]
Спасибо всем за ответы

Добавлено через 21 минуту
alvk, тогда у меня вопрос, наример я создал три таблицы
, как вы посоветовали, и у меня ,к примеру, получилось следующее в третьей таблице

Код Людя (Иванов И.И. С, код -2), Код железки (Samsung,зав. √ 12345, код -3) , дата выдачи, дата приема, статус( находится на данный момент у сотрудника или нет)

В следующий раз, когда придет данный Иванов И.И и принесет мне данный планшет, а я отдам данный планшет Петрову В.В., то для того, чтобы сохранилась история о том у каких сотрудников был данный планшет мне нужно добавить новую запись в данную таблицу с тем же самым планшетом , только у другого сотрудника? А потом у сотрудника Иванова И.И менять вручную статут о том, что планшета у него на данный момент нет? Так получается нужно сделать?
0
 Аватар для VinniPuh
9127 / 6129 / 593
Регистрация: 27.03.2013
Сообщений: 19,972
04.04.2019, 13:29
Цитата Сообщение от AEvgeniyev Посмотреть сообщение
...alvk...
Пока Алвик спит,
Лично я бы так и делал.
0
Эксперт MS Access
 Аватар для Eugene-LS
12066 / 5849 / 1494
Регистрация: 05.10.2016
Сообщений: 16,440
04.04.2019, 13:30
Цитата Сообщение от AEvgeniyev Посмотреть сообщение
В следующий раз, когда придет данный Иванов И.И и принесет мне данный планшет
Добавляйте в эту таблицу запись при выдаче автоматом.
При возврате проставляйте там дату возврата и другое ....
0
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 65
19.04.2019, 00:44  [ТС]
Спасибо огромное всем за ответы.
Теперь появился другой вопрос:

Значение поля "сотрудник" таблицы "Распределение планшетов" берется подстановкой из таблицы "Сотрудники", а в таблице "Сотрудники" поле "Подразделение" берется из таблицы "Список подразделений". Получается, как-бы, подстановка из подстановки. Так вот при выборе сотрудника в таблице "Распределение планшетов" , к примеру, "Иванова И.С. вместо отображения названия подразделения отображается его код, равный 4. Мне же нужно,чтобы отображалась надпись - Иванов И.С. Кадры. Так-как сложно по коду ориентироваться из какого сотрудник подразделения.

Искал решения по форуму, по аналогичным темам, но ответа не нашел. Говорят не использовать подстановку в таблицах, а использовать в формах. Но когда создаешь форму на основе таблиц - результат тот же, отображается код, а не название подразделения.

Как быть, что делать? Заранее спасибо за ответ

Прилагаю тестовую версия базы.
Вложения
Тип файла: rar тест.rar (29.7 Кб, 7 просмотров)
0
 Аватар для VinniPuh
9127 / 6129 / 593
Регистрация: 27.03.2013
Сообщений: 19,972
19.04.2019, 05:19
AEvgeniyev, в свойстве поля со списком указать
Количество столбцов - 2
Присоединенных столбец - 1
Ширина столбцов - 0;4
Так как ширина поля с кодом равна нулю, то его видно не будет, а будет видно следующее поле, ширина которого не равна нулю.
0
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 65
19.04.2019, 08:42  [ТС]
VinniPuh, попробовал, все то же самое, при выоборе значения в поле подстановки отображается та же надпись : Иванов И.С 4.
Мне же нужно, чтобы при выборе значения из выпадающего списка было видно:Иванов И.С. Кадры.Это нужно для наглядности, так как может быть несколько Ивановых И.С. и при выборе значения из выпадающего списка было наглядно видно из какого он подразделения

А столбец с шириной 0см. у меня там уже есть - это ключевое поле id, оно скрыто
0
 Аватар для VinniPuh
9127 / 6129 / 593
Регистрация: 27.03.2013
Сообщений: 19,972
19.04.2019, 08:50
AEvgeniyev, добавьте в запрос поля со списком таблицу, где есть слово кадры и перетяните данное поле вместо кода.
Ну типа в режиме конструктора запроса.
0
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 65
19.04.2019, 09:30  [ТС]
VinniPuh, я сделал так как вы порекомендовали, если правильно понял, но при добавлении в запросе новой позиции ругается на ошибку ядра субд.
Пример во вложении
Вложения
Тип файла: rar тест2.rar (33.0 Кб, 3 просмотров)
0
 Аватар для VinniPuh
9127 / 6129 / 593
Регистрация: 27.03.2013
Сообщений: 19,972
19.04.2019, 09:34
AEvgeniyev, посмотреть не могу, до вечера на планшете.
Может кто другой глянет.

Добавлено через 59 секунд
И кстати, таблицы связаны в схеме данных.
Если нет, то нужно связать.
0
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 65
19.04.2019, 09:49  [ТС]
VinniPuh, таблицы связаны в схеме данных, спасибо, буду ждать
0
 Аватар для VinniPuh
9127 / 6129 / 593
Регистрация: 27.03.2013
Сообщений: 19,972
19.04.2019, 10:02
AEvgeniyev, можете показать на картинке, как у вас выглядит источник строк для данного поля со списком, ну типа запрос в режиме конструктора.
А то у меня вдобавок ещё и акцесс 2000 и ваш пример может не открыться.
0
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 65
19.04.2019, 14:21  [ТС]
VinniPuh, картинки приложил в архиве. Кажется разобрался с помощью Вашего совета организовать через запрос, а ругался на ошибку ядра из за того, что я в запросе не все поля запрлнял. В итоге коды не исчезли,но при выборе сотрудника автоматически заполняется поле "подразделение". Так в итоге должно быть или есть какие другие пути решения вопроса?
Вложения
Тип файла: rar Desktop.rar (330.5 Кб, 4 просмотров)
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
19.04.2019, 15:31
Цитата Сообщение от AEvgeniyev Посмотреть сообщение
берется подстановкой из таблицы "Сотрудники", а в таблице "Сотрудники" поле "Подразделение" берется из таблицы "Список подразделений". Получается, как-бы, подстановка из подстановки.
Никаких полей с подстановкой в таблице быть не должно, это противоречит основным постулатам реляционных СУБД.
Делайте поля со списками на формах и наслаждайтесь.

Цитата Сообщение от VinniPuh Посмотреть сообщение
можете показать на картинке, как у вас выглядит источник строк для данного поля со списком
Я могу показать на картинке, как я отношусь к полям подстановки, но администрация неправильно оценит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.04.2019, 15:31
Помогаю со студенческими работами здесь

Советы по ускорению сетевой базы данных
Привет народ! Вопрос достаточно популярный. Кто какие советы даст по оптимизации и ускорению базы данных в локальной сети. Спасибо!

Создание базы данных, открытие из под одной базы данных MS Access
Здравствуйте. В общем, C# начал заниматься только вот и сразу была поставлена задача создать базу данных. Идея есть, при открытие программы...

VC++. Базы данных Access 97 -> Access 2000
Может кто подскажет, как использовать базу данных, созданную в Access 97, если на PC установлен Access 2000. Если можно, приведите пож-та,...

while и циклы для вывода из базы данных зачем нужны?
Всегда делал вывод из базы в циклах while Пример while ($row=mysql_fetch_array($sql)) { вывод данных } но обнаружил, что можно...

Какой формат базы данных DSN Access (атрибуты и типы данных)?
В настройках IIS можно выбирать формат журнала, один из форматов - это DSN Access, то есть события журналируются в базу данных. Так вот,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru