| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS Access > как создать архив |
| Автор: Tanyaata 28.3.2009, 09:48 |
| У меня имеется база данных школ. каждой школе присвоен свой уникальный номер из 6 цифр. В таблице, где хранятся данные об этой школе, уникальный номер является ключевым полем. Если данные по школе изменились, мне надо их записывать в рабочую таблицу, но и старые данные не терять. Причем нужна дата изменения.но он не даст записать школу с одинаковыми уникальными номерами. Как мне сохранять данные и потом быстро выбирать необходимые данные(в зависимости от даты) о школе и подсчитывать, допустим, количество школ в 2008 и количество школ в 2009 году(школа может закрыться или стать филиалом другой школы) |
| Автор: bopoha 28.3.2009, 14:51 |
| Не стоит никогда опираться только на пользовательскую нумерацию. Я всегда опираюсь на уникальный счетчик. В вашем случае можно завести отдельную таблицу с историей или бить таблицы по годам, если каждый год вы вносите информацию заново. Я бы остановился бы на таблице с историей. Или еще можно разбить основную таблицу на две части основную и дополнительную, в которой будет записываться информация о школе и дата этой информации, со связью один-ко-многим. |
| Автор: Akina 28.3.2009, 18:40 | ||
Это - ошибка, которая и породила проблему. |
| Автор: Tanyaata 28.3.2009, 20:55 | ||||
в течение года я должна использовать данные только из основной таблицы, которая заполняется каждый год в сентябре. но изменения могут происходить в течение всего года Добавлено через 3 минуты и 46 секунд
В принципе я так и сделала, но как соединить основную таблицу и дополнительную? Добавлено через 5 минут и 42 секунды понимаете, если я воспользуюсь счетчиком, то данные о школе могут добавить те же и получится, что в таблице будет две записи про одну школу с одинаковыми данными Добавлено через 7 минут и 11 секунд и что за таблица с историей? |
| Автор: bopoha 29.3.2009, 01:07 |
| Основная таблица и дополнительная, назовем их теперь, таблицы школы и данные школ. Связаны по полю счетчики из таблицы школы, в таблице данные школ внешний ключ. Также в таблице данные школ должна быть дата внесения данных, чтобы можно было получить последнюю информацию. С таблицей историей. В этом случае таблиц тоже две, первая - актуальные данные, вторая - история. Связь по ключевому полю из первой таблицы (как и в первом варианте). В этом случае получение актуальных данных проще. Мне больше нравится второй вариант. По поводу ключевых полей. Счетчик гораздо лучше, чем пользовательский номер. В данном случае счетчик никто не видит и поменять не может, а вот пользовательский код пользователь может захотеть поменять и будет прав. Если пользовательский код использовать во внешних ключах, то получается отличный гемморой с заменой значения. |
| Автор: Tanyaata 2.4.2009, 18:21 |
| А как мне бороться с избыточностью данных? ведь данные могут добавить одинаковые. проверку делать при добавлении? а при таблице истории: как мне потом найти закрытые школы.в таблице истории они будут, а в актуальных данных уже их нет. как их то связать? Добавлено через 7 минут и 22 секунды И скажите еще пожалуйста, как мне защитить базу данных. можно ли просто выложить на сервер, чтобы все пользовались-не будет конфликтов? и как мне любому открывшему сделать доступ только для чтения, без изменения данных в таблицах(только просмотр отчетов, форм и запросов), а 2 людям дать администраторские права. можно ли это сделать без подключения файла рабочей группы? Заранее спасибо за ответы. И спасибо за ответы на предыдущие вопросы |
| Автор: Akina 2.4.2009, 22:42 | ||||
несомненно
это - один из недостатков многотабличного хранения начните с разделения БД |
| Автор: bopoha 3.4.2009, 12:31 | ||||
Я думаю лучше дать возможность пользователю самому решать, что он будет делать: - Исправлять ошибку - редактирование без сохранения истории. - Вносить новые сведенья - редактирование с предварительным сохранением предыдущих данных в истроию
В истории хранятся уже не актуальные данные. На то она и история. Связывать по ключевому полю из таблицы с актуальными данными. Закрытые школы могут быть в актуальных данных, т.к. это последнее состояние объекта. От чего и от кого защищать? |
| Автор: Tanyaata 4.4.2009, 20:21 |
| защитить, чтобы пользователи не испортили данные в таблице, чтобы совместно могли использовать базу данных? если же закрытые данные хранить в актуальной таблице, то как мне выбирать данные актуальные только для этого года? |
| Автор: bopoha 4.4.2009, 22:50 | ||||
Ни разу не встречал пользователей, желающих испортить свои данные. Просто скройте от них окно базы данных и предоставьте удобное меню и формочку. И будет им счастье.
Почему информация о том, что школа закрыта не является актуальной? Она же закрыта! Если у вас будет дата закрытия или какой-либо другой признак, то всегда можно отфильтровать данные. Откуда у вас взялся год? В актуальной таблице самая последняя информация о школе. |
| Автор: Tanyaata 5.4.2009, 10:42 | ||
Мне же надо подсчитывать сколько школ на этот год и сколько в них человек |
| Автор: bopoha 6.4.2009, 12:15 | ||
Фильтруйте данные по дате закрытия или по любому другому признаку. |
| Автор: Tanyaata 9.4.2009, 19:06 |
| А может еще подскажите. У меня есть форма_Показать данные по главной таблице данных о школе. Я на нее добавила кнопку "Изменить". при нажатии, открывается форма_Внести_изменения(в свойствах поля - данные-пусто, то есть не зависят от элемента), в нее заносятся данные которые можно менять. в этой форме также есть кнопки - сохранить изменения и отменить изменения. Можно ли мне как-то сразу занести данные измененные в саму таблицу, а не через форму_Показать(в которой поля зависят от значений в таблицах)? Я сначала присваиваю полям формы_Показать данные из полей формы_Внести_изменения. а там уже автоматически записываются данные в таблицу. а можно сразу из свободных полей, записать в таблицу??? |
| Автор: bopoha 9.4.2009, 22:29 |
Только програмно! |
| Автор: Tanyaata 10.4.2009, 21:21 | ||
я написала модуль, но для того чтобы занести в таблицу, ее надо открыть, а мне бы не хотелось пользователям ее показывать |
| Автор: bopoha 10.4.2009, 21:28 |
| Эээээ, как же вы в таблицу данные заносите? Если использовать DAO, ADO или запрос, то пользователь ничего не увидит. |