Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Результаты опроса: Есть необходимость создавать свои статьи
согласен (согласна) 6 100.00%
не согласен (не согласна) 0 0%
мне все равно 0 0%
Голосовавшие: 6. Вы ещё не голосовали в этом опросе

 
 
Рейтинг 4.57/740: Рейтинг темы: голосов - 740, средняя оценка - 4.57
545 / 375 / 16
Регистрация: 17.12.2009
Сообщений: 988
05.03.2012, 10:50 21
Author24 — интернет-сервис помощи студентам
Совместная работа MS Access и сервера MySQL
Уважаемые коллеги, любители, профессионалы, айтишники, бухгалтеры, логисты, здравствуйте!
Возникла идея написать полезную статью, как организовать совместную работу бесплатного сервера MySQL и программного продукта MS Access (2003,2007,2010).
У каждого человека в данной ветке, пользующегося аксессом в рабочих целях рано или поздно возникала мысль сделать работу программы пошустрей (особенно если использовалась обычная разделенная база данных , где таблицы просто лежали в какой либо папке и пользователь через оболочку аксесса/клиентской частью подключался к этим таблицам, которые все больше и больше тормозили из-за увеличивающегося количества информации и увеличивающегося количества пользователей).
Хоть и обещают разработчики аксесса, что могут единовременно трудится в ней порядка 255 человек, но все это спорно. При моих таблицах нормальные тормоза уже возникали при 16-18 людях, которые одновременно использовали проект. Количество полей в некоторых таблах достигало порядка 100 штук.
Причем проект был неплохо нормализован и логические связи в схеме данных были прописаны правильно.
Решил избавиться от тормозов и поискать удобные решения работы через сервер. Расставаться с удобным и дружелюбным интерфейсом аксесса не хотелось и поэтому в качестве клиентской части оставил его.
В качестве сервера перепробовал следующие варианты:
1) ORACLE
2)SQL LITE
3) MS SQL SERVER 2008
4) MYSQL
Все эти сервера были поставлены и опробованы мной на локальной машине(обычном ноутбуке).
Остановился на последнем варианте, а именно mysql server.
Что понравилось:
1) самая большая скорость работы, по сравнению с остальными вариантами. (те, кто скажет что в мускуле нет транзакций, можно отхлестать по заднице до покраснения)) В версии 5 все есть)
2) Легкость в установке и настройке.
3) Возможность писать помимо аксесовского варианта еще и вэб интерфейс (то есть использовать БД как источник данных для сайта)
4) Хорошая отказоустойчивость.
5) Совместимость языка MySQL и обычного аксесовского JET SQL.
6) Легкий и интуитивно понятный интерфейс администратора сервера MYSQL.
7) Возможность обычной линковки таблиц через MyODBC driver (в случае если база используется на одном компе или в одной корпоративной сети с настроенным общим доступом к источнику данных. В остальных случаях доступ логичней организовать через connection string c точечными запросами к серверу. Мне вообще больше нравится второй вариант, ибо ...ибо нравится)))

ГЛАВА 1. - Установка и настройка MySQL server на домашний комп.
Итак, желание есть, возможности есть, места известны, устанавливаем собственно на комп MySQL server и MyODBC driver.
1) Где найти MySQL . Предлагаю вам сразу поставить готовую сборку MySQL+PHP+HTML+APACHE от энтузиастов сайтостроения. Скачать эту сборку можно
ЗДЕСЬ
Заходите на сайт. Видите большую оранжевую кнопку?? Вот вот, ее и можно нажимать и заливать сервак к себе на комп.
После скачивания дистрибутива, устанавливаете все это к себе на компьютер ("при установке следуйте за зеленым кроликом (С)"-Там все написано таким языком, что даже самый последний даун поставит мускул и апачи к себе на комп. Но не забудьте в конце установки сказать, чтобы иконки на рабочем столе появились.)
После того, как вы все поставили у вас на рабочем столе появились три иконки в виде перышка. START,RESTART,STOP То есть соответственноЗАПУСТИТЬ МУСКУЛ И АПАЧ, ПЕРЕЗАПУСТИТЬ МУСКУЛ И АПАЧ, ЗАВЕРШИТЬ РАБОТУ С МУСКУЛОМ И АПАЧ
Вот такие:
Название: 111.jpg
Просмотров: 14303

Размер: 6.4 Кб
Нажмите иконку перезапустить Денвер.
После перезапуска в нижнем правом углу монитора появится значок перышка и шляпы. Это значит ,что апач и мускул заработал.
Вот такое увидите :
Название: 222.jpg
Просмотров: 15137

Размер: 3.7 Кб
Все отлично, заработало,ура. Возник вопрос, как нам теперь попасть на сервак?
Очень просто, открываете в интернет браузере следующий адрес http://localhost/PhpMyAdmin/
Появится подобная картинка:
Написание статей

По умолчанию денвер никак не паролит сервер и дает свободный доступ к нему любого желающего на локальной машине. Вбиваете логин ROOT и нажимаете Ok Никакой пароль не забиваете. Все , процесс доступа свершился.
Появляется примерно такая картинка:
Написание статей

Видите обведенный поле красным? Это поле ждет, когда вы туда забьете имя своей базы данных, которую будете переносить потом с аксесса на MySQL.
Вводите любое имя на английском и нажимайте Ок.
Все, база данных создана и готова к импорту таблиц с аксесса.


ГЛАВА 2. Перенос таблиц и запросов с аксесса на мускул. Линковка MS access и таблиц мускула через MyODBC driver
Что мы хотим сделать в этой главе? Мы хотим подружить аксесс и MySQL , чтобы мускул крутил наши таблы а аксесс выполнял функции погонщика и смотрителя за педалями этого велосипеда.
Создайте тестовую БД в обычном аксеccе . Создайте одну табличку. Назовите ее по английски Table1.
Создайте в ней всего три поля schetchik,chislo,tekst. Типы данных надеюсь обьяснять не надо
Заполните эту табличку какой нибудь произвольной хренью, которая придет в голову. Числом записей этак на двадцать. Все , пациент к экспорту на мускул готов и ждет его.
Чтобы нормально, грамотно и очень быстро перенести данную таблицу на мускул (она может перенести естественно не только одну таблицу, но и тысячу. Сколько в аксессе есть, столько и перенесет. Если захотите, может и запросы прихватить), предлагаю установить дополнительную программку. Называется она Database Migration Toolkit.
Ну собственно тушка и таблетка находится
ТУТ
ESF Database Migration Toolkit Pro 6.3.27

Не забудьте про лекарства. Сейчас весна, переходный период. Витаминов не хватает. Таблетки помогут.
Рецепт только немного почитайте.
Скачиваете эту программку запускаете. В качестве источника указываете и находите вашу свежесозданную БД в аксеcсе. В качестве пункта назначения выбираете из списка
MySQL database
Server: localhost
Port:3306
User:root
Database: (Имя вашей базы, которую вы создали на серваке).

Не забудьте, что в этот момент мускул должен быть запущен. То есть перышко и шляпа должны быть видны внизу вашего экрана.
Ну там дальше прогресс бар, вы смотрите как заливается на мускул ваши таблы из акса, итд итп. После заливки закрываете программку миграции. Она вам больше не нужна сейчас (если еще ченить захотите потом экспортнуть, ради бога.)
Все, сервер и база готовы к приему аксесса.
Но аксесс не готов. Чтобы ему увидеть мускул, необходимо поставить переходник. То есть MyODBC driver . Это нужно для того, чтобы аксесс читал синтаксис сервака, и наоборот, сервак читал команды аксесса.
Скачать драйвер можно ЗДЕСЬ. Или поставить из приложения в данной статье. Файл называется ДРОВА МУСКУЛ. На 32 битный и 64 битный виндоуз . Выбирайте.
После скачки и установки драйвера, вам необходимо настроить источник данных , по которому аксесс будет связываться с серваком на мускуле.
Чтобы попасть в настройку источника данных- самый простой вариант:
ПУСК-> ВЫПОЛНИТЬ-> odbcad32-> Ок
А далее смотрите по рисунку:
Написание статей

Все. Источник для связки акса готов.
Теперь открываете аксесс и делаете следующее:
Написание статей

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


Если моя статья помогла вам, можете кликнуть спасибку.

Кстати при выборе пакета MYSQL можно еще воспользоваться не менее креативной сборкой от наших земляков и поставить мускул от энтузиастов на NIMPBOX. Установить Апач,Мускул,Nginx,FileZilla можно
ЗДЕСЬ. В самопальной сборке очень удобно править настройки обеих серверов. Доступ прямо к файлу htdocs. Все перед глазами. Это не отступление от самой статьи. Это просто для тех, кто освоит инструкцию выше и захочет чего то большего.

Вот кстати сам сервак MySQL приложил. Установочный пакет. С Денвера.

С Уважением,
Сергей
Вложения
Тип файла: rar ДРОВА_МУСКУЛ.rar (6.90 Мб, 967 просмотров)
Тип файла: rar САМ_СЕРВАК.rar (6.12 Мб, 727 просмотров)
71
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2012, 10:50
Ответы с готовыми решениями:

Сжатие базы данных по варианту 6.4. из темы Написание статей
Выполнил все рекомендации изложенные в пункте 6.4.. На последнем этапе застрял. Короче, не...

Написание IT статей
Доброго времени суток! Ищу человека, которому интересно писать компьютерные статьи за оплату. ...

написание статей
:) помогите пожалуйсто. хочу вот заказать написание статьи незнаю какую лучше с оптимизацией или...

Написание статей на определенной странице
Доброе утро. Создал бложек, но вот беда, не понял как постить статьи на страницах которые сам...

49
2092 / 1168 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
17.03.2012, 18:22 22
Пример разработки структуры базы данных для деканата факультета ВУЗа (в дополнение к статье "О разработке структуры базы данных")

1. Определяемся с целями и задачами нашей бд
Это будет база данных для деканата факультета ВУЗа для учета данных по студентам, преподавателям, для составления учебных планов и расписаний, расчета нагрузки преподавателей, учета сдачи студентами зачетов и экзаменов.

2. Определимся со списком данных, которые нужно хранить в бд
При этом распределяем данные по группам, в дальнейшем это поможет нам разбить данные по таблицам. Хотя набор таблиц может быть другим, но это может стать отправной точкой.
•Студенты в группах (форма обучения, бюджет/контракт, специальности, группы, специализации, ФИО студентов, дата рождения, их контактные данные)
•Преподаватели (ФИО преподавателей, кафедра, должность, звание, научная степень, контактные данные)
•Дисциплины (наименование дисциплины, кто из преподавателей читает или эту информацию отнести к Преподавателям?)
•Учебные планы по курсам (сколько часов какой дисциплины положено на каком курсе по какой специальности и специализации)
•Зачеты и экзамены (какие зачеты и экзамены должны сдавать студенты на определенном курсе, определенной специальности и специализации; результаты сдачи зачетов и экзаменов)
•Расписание занятий для студентов (по каждой группе: неделя (числитель/знаменатель), день недели, время занятия, аудитория, преподаватель, название дисциплины)
•Расписание занятий для преподавателей (по каждому преподавателю: неделя (числитель/знаменатель), день недели, время занятий, аудитория, дисциплина, группа)
•Расчет нагрузки преподавателей (сколько пар каждый день, составление диаграммы)
•Статистика по студентам (бюджет/контракт, рейтинги по оценкам за сдачу экзаменов)
•Начисление стипендии студентам по результатам сдачи экзаменов
При этом заметим, что некоторые данные будут входной информацией, некоторые выходной. Последние четыре пункта нашего списка можно отнести к выходной информации, т.к. введенных данных по всем предыдущим пунктам будет достаточно для получения этих данных.

3. Составим список таблиц
Каждой группе входных данных – своя таблица.
•Студенты
•Преподаватели
•Дисциплины
•Учебные планы
•Зачеты и экзамены
•Расписание занятий
Проанализируем каждую из таблиц на наличие повторяющихся данных:
1)Студенты: В примере студент 1-го курса, который еще не выбрал специализацию:
Основа обученияФорма обученияСпециальностьГруппаСпециализацияФИО студентаДата рожденияАдресТелефон
БюджеточнаяФизика80Ф-11 Иванов Иван Иванович01.01.1995ул. Мира, 5111-11-11
В этой таблице будет происходить дублирование каждой группы по количеству в ней студентов. Каждый раз придется писать номер группы вручную, это может привести к опечаткам, а затем к ошибкам при фильтрации по группе, например. Поэтому выделим группы в отдельную таблицу.
Специальность связана с группой, поэтому отнесем ее к таблице Группы. При этом название специальности все равно придется каждый раз дублировать, поэтому выделяем их в отдельную таблицу.
Также мы видим, что будет происходить дублирование полей Основа обучения и Форма обучения, поэтому эти значения также выделим в отдельные таблицы.
Аналогично со специализацией.
Т.о., вместо одной таблицы Студенты мы получили следующие:
•Специальности
•Группы
•Специализации
•Формы обучения
•Основы обучения
•Студенты
2)Преподаватели:
ФИО преподавателяКафедраДолжностьЗваниеНаучная степеньТелефон
Иванов Иван ИвановичВысшая математикаСтарший преподавательДоцентКандидат наук222-22-22
Здесь будет происходить дублирование по кафедрам, должностям, званиям, научным степеням, поэтому их также выделим в отдельные таблицы, избавив тем самым пользователей бд от необходимости вносить значения этих полей вручную.
Итак, вместо одной таблицы Преподаватели получаем следующие:
•Кафедры
•Должности
•Звания
•Научные степени
•Преподаватели
3)Дисциплины: здесь мы задали себе вопрос, должна ли содержаться в этой таблице информация о том, какой преподаватель читает данную дисциплину, или эту информацию стоит отнести к таблице Преподаватели (т.е. какие дисциплины читает)
ДисциплинаПреподаватель
Мат анализИванов Иван Иванович
Мат анализПетров Петр Петрович
Происходит дублирование названия дисциплины, если ее читает несколько преподавателей.
Если же мы сделаем наоборот и добавим дисциплину в таблицу Преподаватели, то будет происходить дублирование данных о преподавателе в случае чтения им нескольких дисциплин.
Выход из положения – помимо таблиц Преподаватели и Дисциплины, создание дополнительной таблицы Дисциплины по преподавателям, связывающей Преподавателей и Дисциплины.
•Дисциплины
•Дисциплины по преподавателям
4)Учебный план: он будет разным для каждого курса, специальности и специализации:
КурсСпециальностьСпециализацияДисциплинаКол-о часов
1Физика-Механика100
1Физика тв тела-Механика100
3ФизикаМЭЭлектродинамика100
3Физика тв телаМЭЭлектродинамика100
4ФизикаМЭАтомная физика100
4Физика тв телаМЭАтомная физика100
5ФизикаМЭМикроэлектроника100
5Физика тв телаМЭМикроэлектроника100
5 (маг)ФизикаМЭМикроэлектроника100
5 (маг)Физика тв телаМЭМикроэлектроника100
Здесь мы видим дублирование курса, и в принципе не сложно поставить номер курса каждый раз, но у нас имеется 5 (маг), который требует ввода текста, поэтому стоит вынести курсы в отдельную таблицу.
•Курсы
•Учебный план
5)Зачеты и экзамены, назовем эту таблицу Отчетность. Они будут также разными для курсов, специальностей и специализаций, а также семестров:
КурсСпециальностьСпециализацияСеместрДисциплинаВид отчетности
1Физика-1Мат анализЭкзамен
1Физика-1ФизкультураЗачет
Здесь мы видим, что будут дублироваться виды отчетности (зачет/экзамен), поэтому выделим их в отдельную таблицу.
Кроме этого должна быть таблица по сдаче студентами зачетов и экзаменов:
СтудентДата сдачиЗачет/экзаменОценка
Иванов Иван Иванович04.01.2012Мат анализ, экзамен5
Иванов Иван Иванович20.12.2011Физкультура, зачетЗачет
Где поле Зачет/экзамен – поле, связанное с предыдущей таблицей.
Оценки также будут дублироваться, поэтому их тоже стоит выделить в отдельную таблицу. При чем, система оценивания зависит от вида отчетности (зачет/экзамен).
Итак, получаем следующие таблицы:
•Виды отчетности
•Отчетность
•Оценки
•Сдача студентами экзаменов/зачетов
6)Расписание занятий:
НеделяДень неделиВремя занятийГруппаСпециализацияДисциплинаПреподавательТип занятияКорпусАудитория
ЧислительПонедельник8:30 – 10:0580Ф-11-Мат анализИванов Иван Ивановичлекцияглавный302
Будут дублироваться Недели, Дни недели, Время занятий, Типы занятий, Корпуса, Аудитории, поэтому все это выделяем в отдельные таблицы.
•Недели
•Дни недели
•Расписание звонков
•Типы занятий
•Корпуса
•Аудитории

Итак мы получили следующий набор таблиц:
•Курсы
•Специальности
•Группы
•Специализации
•Формы обучения
•Основы обучения
•Студенты
•Кафедры
•Должности
•Звания
•Научные степени
•Преподаватели
•Дисциплины
•Дисциплины по преподавателям
•Учебный план
•Виды отчетности
•Отчетность
•Оценки
•Сдача студентами экзаменов/зачетов
•Недели
•Дни недели
•Расписание звонков
•Типы занятий
•Корпуса
•Аудитории

4. Распределим данные по столбцам таблиц
•Курсы (Курс)
•Специальности (Специальность)
•Группы (Год создания, Специальность, Номер группы)
•Специализации (Специализация)
•Формы обучения (Форма обучения)
•Основы обучения (Основа обучения)
•Студенты (ФИО, Дата рождения, Адрес, Телефон, Основа обучения, Форма обучения, Группа, Специализация)
•Кафедры (Кафедра)
•Должности (Должность)
•Звания (Звание)
•Научные степени (Научная степень)
•Преподаватели (ФИО, Кафедра, Должность, Звание, Научная степень, Контакты)
•Дисциплины (Дисциплина)
•Дисциплины по преподавателям (Дисциплина, Преподаватель)
•Учебный план (Курс, Специальность, Специализация, Дисциплина, Количество часов)
•Виды отчетности (Вид отчетности)
•Отчетность (Курс, Специальность, Специализация, Семестр, Дисциплина, Вид отчетности)
•Оценки (Вид отчетности, Оценка)
•Сдача студентами экзаменов/зачетов (Студент, Дата, Отчетность, Преподаватель, Оценка)
•Недели (Вид недели)
•Дни недели (День недели)
•Расписание звонков (Номер пары, Время начала, Время окончания)
•Типы занятий (Тип занятия)
•Корпуса (Корпус)
•Аудитории (Корпус, Аудитория, Тип аудитории, Количество посадочных мест)
•Расписание занятий (Неделя, День недели, Время занятий, Группа, Специализация, Дисциплина, Тип занятия, Преподаватель, Аудитория)
•Типы аудиторий (Тип аудитории)
Появление последней таблицы обязано продумыванием полей для таблицы Аудитории: возникло бы дублирование типов аудиторий – лекционная, лаборатория и т.д.
Совет: добавлять поля для иерархии, чтобы можно было отфильтровывать список значений поля, стоящего ниже по иерархии, для удобства и ускорения поиска.
Например, на факультете есть специализации, каждая группа – выбранная специальность, она есть в таблице Группы, поэтому Специальность для Группы иерархически выше. Добавив выбор специальности в таблицу Студенты, можно будет отфильтровывать список групп для упрощения ее поиска в списке.
Аналогично с Расписанием занятий: добавим сюда поле Специальность для последующей фильтрации списка групп в списке.
И точно также поступим с Корпусами и Аудиториями в таблице Расписание занятий: добавим поле Корпус для иерархии (чтобы фильтровать аудитории по выбранному корпусу).
Вспомним о правиле, что лучше разбивать информацию на минимальные логические компоненты, поэтому поля ФИО таблиц Студенты и Преподаватели разобьем на три поля, поле Контакты таблицы Преподаватели разобьем на Адрес и Телефон. В дальнейшем это может упростить поиск данных, например. Из поля ФИО сложнее получить Фамилию и инициалы, чем из трех полей Фамилия, Имя, Отчество.
Как видим, наши таблицы не содержат вычисляемых данных, т.к. мы изначально определились, что будет входной информацией, а что выходной.
Учтем советы об именах полей и таблиц: имена, состоящие из нескольких слов, запишем без пробелов, разделяя символом подчеркивания или выделим с большой буквы.
Итак, после небольших корректировок таблицы будут содержать следующие поля:
•Курсы (Курс)
•Специальности (Специальность)
•Группы (Год_создания, Специальность, Номер_группы)
•Специализации (Специализация)
•Формы_обучения (Форма_обучения)
•Основы обучения (Основа_обучения)
•Студенты (Фамилия, Имя, Отчество, Дата_рождения, Адрес, Телефон, Основа_обучения, Форма_обучения, Специальность, Группа, Специализация)
•Кафедры (Кафедра)
•Должности (Должность)
•Звания (Звание)
•Научные_степени (Научная_степень)
•Преподаватели (Фамилия, Имя, Отчество, Кафедра, Должность, Звание, Научная_степень, Адрес, Телефон)
•Дисциплины (Дисциплина)
•Дисциплины/преподаватели (Дисциплина, Преподаватель)
•Учебный_план (Курс, Специальность, Специализация, Дисциплина, Количеств_ часов)
•Виды_отчетности (Вид_отчетности)
•Отчетность (Курс, Специальность, Специализация, Семестр, Дисциплина, Вид_отчетности)
•Оценки (Вид_отчетности, Оценка)
•Сдача_ экз/зач (Студент, Дата, Отчетность, Преподаватель, Оценка)
•Недели (Вид_недели)
•Дни_недели (День_недели)
•Расписание_звонков (Номер_пары, Время_начала, Время_окончания)
•Типы_занятий (Тип_занятия)
•Корпуса (Корпус)
•Аудитории (Корпус, Аудитория, Тип_аудитории, Количество_мест)
•Расписание_занятий (Неделя, День_недели, Время_занятий, Специальность, Группа, Специализация, Дисциплина, Тип_занятия, Преподаватель, Корпус, Аудитория)
•Типы аудиторий (Тип_аудитории)

5. Определим ключевые поля таблиц
Воспользуемся советом о том, что самый лучший и простой ключ для таблицы – счетчик, поэтому добавим его в каждую таблицу с название Код…, где вместо троеточия будем подставлять сокращенные названия таблиц. Это делается для того, что по названию сразу было видно из какой таблицы данный счетчик-ключ.
•Курсы (КодКурса, Курс)
•Специальности (КодСпециальности, Специальность)
•Группы (КодГруппы, Год_создания, Специальность, Номер_группы)
•Специализации (КодСпециализ, Специализация)
•Формы_обучения (КодФормыОбуч, Форма_обучения)
•Основы_обучения (КодОснОбуч, Основа_обучения)
•Студенты (КодСтуд, Фамилия, Имя, Отчество, Дата_рождения, Адрес, Телефон, Основа_обучения, Форма_обучения, Специальность, Группа, Специализация)
•Кафедры (КодКафедры, Кафедра)
•Должности (КодДолжности, Должность)
•Звания (КодЗвания, Звание)
•Научные_степени (КодНаучСт, Научная_степень)
•Преподаватели (КодПрепода, Фамилия, Имя, Отчество, Кафедра, Должность, Звание, Научная_степень, Адрес, Телефон)
•Дисциплины (КодДисц, Дисциплина)
•Дисциплины/преподаватели (КодДисцПреп, Дисциплина, Преподаватель)
•Учебный_план (КодУчПлан, Курс, Специальность, Специализация, Дисциплина, Количество_часов)
•Виды_отчетности (КодВидОтч, Вид_отчетности)
•Отчетность (КодОтч, Курс, Специальность, Специализация, Семестр, Дисциплина, Вид_отчетности)
•Оценки (КодОценки, Вид_отчетности, Оценка)
•Сдача_ экз/зач (КодСдачи, Студент, Дата, Отчетность, Преподаватель, Оценка)
•Недели (КодНед, Вид_недели)
•Дни_недели (КодДняНед, День_недели)
•Расписание_звонков (КодРасписЗв, Номер_пары, Время_начала, Время_окончания)
•Типы_занятий (КодТипЗан, Тип_занятия)
•Корпуса (КодКорп, Корпус)
•Аудитории (КодАуд,Корпус, Аудитория, Тип_аудитории, Количество_ мест)
•Расписание_занятий (КодРаспис, Неделя, День_недели, Время_занятий, Специальность, Группа, Специализация, Дисциплина, Тип_занятия, Преподаватель, Корпус, Аудитория)
•Типы_аудиторий (КодТипАуд, Тип_аудитории)

6. Определим типы данных и другие ограничения для полей
Определяем типы данных полей. Например, Дата рождения таблицы Студенты будет иметь тип Дата/время. Тоже касается полей Время начала, Время окончания таблицы Расписание звонков.
Помним, что тип данных первичных и внешних ключей (т.е. ссылок на первичные ключи) должен совпадать, а т.к. у нас все первичные ключи таблиц – счетчики, то все внешние ключи будут числового типа. Т.е. во внешних ключах будут содержаться первичные ключи – коды записей из связанных таблиц.
Например, поле Специальность таблицы Группы будет числовым, т.к. это внешний ключ таблицы Специальности, и будет связан с первичным ключом Специальностей на схеме данных.
Кроме определения типов данных, задаем также некоторые ограничения для полей. Например, сделаем в поле Семестр подстановку значений 1,2 и зададим свойство Ограничиться списком = Да.
Для полей Время начала и Время окончания таблицы Расписание звонков зададим Формат поля – Краткий формат времени.
К примеру, для поля Курс таблицы Курсы можно задать размер поля 10, т.к. больше 10-символов в этом поле вряд ли будет. Этим мы уменьшаем размер бд, т.е. экономим дисковое пространство.

7. Определим связи между таблицами
Мы планировали связывание таблиц еще на этапе распределения данных по таблицам, поэтому изначально добавляли в нужные места внешние ключи (т.е. ссылки на первичные ключи). Поэтому мы просто соединяем первичные ключи таблиц с внешними ключами.
Например, для таблицы Специализации первичным ключом будет поле КодСпециализ, а внешними ключами для этой таблицы будут поля Специализация таблиц Студенты, Отчетность, Учебный план, Расписание занятий. На схеме данных соединяем их с первичным ключом таблицы Специализация.
И так, проверяя каждую из таблиц, расставляем связи, используя Обеспечение целостности данных.
Новичкам же, возможно, придется на этом этапе проектирования добавлять внешние ключи для связывания таблиц, а может и отдельные связующие таблицы.
Написание статей


Обсуждение статьи
Вложения
Тип файла: rar Пример бд.rar (39.9 Кб, 3075 просмотров)
39
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
14.01.2016, 16:58 23
В Microsoft выпустили хелп-файлы по идентификаторам интерфейса управления библиотеки офиса (Microsoft Office 14.0 Object Library) - https://www.microsoft.com/en-u... px?id=6627 для офиса 10. Статья была видимо подготовлена давно, но никаких ссылок на нее в сети не видел. А очень полезная. Дает имена контролов, тип и ID всех контролов, которые могут быть использованы в меню, контекстном меню, на ленте или выполнены. Особый интерес, для меня во всяком случае, что с помощью команды ExecuteMso можно выполнить любую команду меню. Синтаксис: (пример для вызова диалога принтера)
Visual Basic
1
Application.CommandBars.ExecuteMso "PrintDialogAccess"
Прикладываю скачанный файл со списком команд для всех программ офиса. Для использования команд надо подключать библиотеку офиса Microsoft Office ХХ.0 Object Library. Большая часть команд из файла AccessControls.xlsx пригодна и для старших офисов 2003, 2007.

Весьма любопытно использование команд для других программ офиса. Например в екселе процедура красит цветом по умолчанию текущую ячейку (команды из файла ExcelControls.xlsx во вложении)
Visual Basic
1
2
3
4
Sub SelectionFillColor()
'закрасить ячейки текущим цветом из палитры
    Application.CommandBars.ExecuteMso "CellFillColorPicker"
End Sub
Вложения
Тип файла: rar Office2010ControlIDs.rar (2.43 Мб, 216 просмотров)
10
33 / 33 / 6
Регистрация: 24.11.2015
Сообщений: 330
10.02.2016, 07:49 24
Но всё правило.
0
0 / 0 / 0
Регистрация: 08.11.2014
Сообщений: 5
19.04.2016, 02:00 25
Спасибо, помогло!
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
22.09.2016, 11:23 26
В последнее время участились примеры баз с модулями без использования Option Explicit. Хотя и раньше их было немало. В связи с этим размещаю небольшую, но выразительную статью автора Shoker.Pro с другого форума.
К сожалению, по правилам cyberforum.ru не могу дать ссылку на первоисточник
Используйте Option Explicit

Напишите в заголовке каждого своего модуля (то есть перед всеми другими переменными, функциями и процедурами):
Visual Basic
1
Option Explicit
Что это значит?
Это значит, что отныне все переменные, которые вы используете в своей программе, нужно будет объявить явно с помощью оператора объявления Dim.
То есть, если у вас есть процедура:
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Command1_Click()
 
For i = 1 To 5
  k = "Проход №" + CStr(i)
  '..............
  '..............
Next
 
End Sub
она должна стать такой:
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Command1_Click()
 
Dim i As Integer, k As String
For i = 1 To 5
  k = "Проход №" + CStr(i)
  '..............
  '..............
Next
 
End Sub
Зачем это нужно?
Если вам дали ссылку на эту статью, значит в своей программе вы допустили ошибку или проявили непонимание, которые можно устранить с помощью Option Explicit. Дело в том, что в случае отсутствия этой опции, VB/VBA встретив незнакомое ему слово, считает его новой переменной. Хотя вы, скорее всего, имели ввиду совершенно другое.


Типичные ошибки:
Visual Basic
1
2
3
4
MyNiceVariable = 5
'..............
If MyNceVariable = 5 Then 'ошибка в имени переменной
                          'VBA решит, что вы ввели новую переменную
Visual Basic
1
2
y = xmod10 'вариант ошибки в синтаксисе (вместо y = x mod 10)
           'VBA решит, что xmod10 - это новая переменная
Visual Basic
1
2
Workbooks(Книга1).Close 'ошибка в использовании текстовой константы (нет кавычек)
                        'VBA решит, что Книга1 - это новая переменная
Visual Basic
1
2
3
4
5
6
k = "Hello World"
'..............
'..............
'..............
p = k + 5 'использование переменной неверного типа (так как тип переменной
          'не объявлен явно в Dim)

Это далеко не полный перечень возможных ошибок. Нередки также случаи путаницы русских и английских букв в имени переменной.
Еще раз отмечу, что использование Option Explicit существенно сократит время решения вашей задачи, потому что вместо ожидания ответа на форуме вы получите вполне осмысленное сообщение от компилятора.

Как включить:
Tools => Options => Editor => Require Variable Declaration
Включите этот флажок и Option Explicit будет появляться автоматически во всех новых модулях/формах/классах (в старых не появится, нужно будет прописать вручную)
6
202 / 23 / 4
Регистрация: 27.01.2015
Сообщений: 354
Записей в блоге: 1
27.12.2016, 17:01 27
Цитата Сообщение от БурундукЪ Посмотреть сообщение
При удалении данных в таблица
а как вообще удалить?
0
1 / 1 / 0
Регистрация: 03.01.2015
Сообщений: 14
05.09.2017, 10:18 28
Цитата Сообщение от Сергей1980 Посмотреть сообщение
Если моя статья помогла вам, можете кликнуть спасибку.
Огромное Вам спасибо! И низкий поклон, за то что пролили свет на тёмные пятна моих познаний. Давно искал способы реализации такой идеи. Кнопку "Спасибка" не нашёл, но от вашей статьи и приложенных к ней файликов я в восторге!

Добавлено через 11 часов 39 минут
Цитата Сообщение от Сергей1980 Посмотреть сообщение
1) самая большая скорость работы, по сравнению с остальными вариантами. (те, кто скажет что в мускуле нет транзакций, можно отхлестать по заднице до покраснения)) В версии 5 все есть)
Всё настроил. Запустил. Работает норм! только вот один косяк не могу понять.... когда Access обращается на сервер через связанную таблицу... на жёсткий диск нагрузка 100% приложение подвисает секунд на 5-30 (зависит от количества записей в данной таблице). Приходят данные свежие, явно подгруженные с сервера, но для чего так жёстки диск нагружать? И ведь пока с диском работать не за кончает, запрашиваемую таблицу не отображает. А если запрос на обновление из нескольких таблиц, то вообще, за это время можно и вздремнуть немного . Количество записей в таблицах совсем крохотное 100-150 максимум. Скорость сети 100Мбит/с. База данных MySQL на хостинге в REG.RU по безлимитному тарифу. Что я настроил не так?
1
3 / 3 / 0
Регистрация: 03.08.2015
Сообщений: 156
14.07.2020, 13:28 29
Сергей1980, подскажите, пожалуйста, насколько эта статья и инструкция актуальны на 2020 год?
0
Эксперт MS Access
7399 / 4536 / 295
Регистрация: 12.08.2011
Сообщений: 14,035
15.07.2020, 09:02 30
Цитата Сообщение от Rikozenit Посмотреть сообщение
насколько эта статья и инструкция актуальны на 2020 год?
Они актуальны, пока существует софт, который в них описан.
0
3 / 3 / 0
Регистрация: 03.08.2015
Сообщений: 156
15.07.2020, 09:14 31
alvk, я в том плане, что в случае, если установлен Офис 2016 и на дворе 2020 год, возможно, есть более современные методы переноса базы на сервер? Если есть - посоветуйте, плиз, где почитать. Ну а если нет, то буду пытаться делать всё по приведённой выше инструкции.
0
Эксперт MS Access
7399 / 4536 / 295
Регистрация: 12.08.2011
Сообщений: 14,035
15.07.2020, 09:42 32
Цитата Сообщение от Rikozenit Посмотреть сообщение
есть более современные методы переноса
Метод переноса либо есть, либо его нет, остальное субъективно. Я уже написал вам, что..
0
545 / 375 / 16
Регистрация: 17.12.2009
Сообщений: 988
15.07.2020, 20:11 33
Цитата Сообщение от Rikozenit Посмотреть сообщение
Сергей1980, подскажите, пожалуйста, насколько эта статья и инструкция актуальны на 2020 год?
Да, актуально конечно. Но думаю переписать с реалиями выхода нового MySql 8.0.
Там появилось много новых плюшек, которые можно использовать совместно с клиентом на MS Access, да и Denwer уже давно не поддерживается ,не обновляется. Рекомендую сборку сервера mysql на wampserver , драйвера на MySql уже лучше ставить 8.0.. (сразу два , и 32х и 64х битную версию).
3
0 / 0 / 0
Регистрация: 07.04.2021
Сообщений: 1
08.04.2021, 12:59 34
Как вариант можно ведь использовать XAMPP?
Википедия
XAMPP - Кроссплатформенная сборка локального веб-сервера, содержащая Apache, MySQL, интерпретатор скриптов PHP, язык программирования Perl и большое количество дополнительных библиотек, позволяющих запустить
Читать дальше
Год выхода: 2002 г.
Платформа: Windows
0
Эксперт MS Access
7399 / 4536 / 295
Регистрация: 12.08.2011
Сообщений: 14,035
08.04.2021, 14:29 35
хам? это ясное слово. а остальное?
0
735 / 205 / 12
Регистрация: 16.01.2014
Сообщений: 682
12.10.2021, 12:05 36
Как оказывается, здесь можно размещать статьи. Хотя ветка и замаскирована под опрос.
Даже несколько своих статей нашел. Правда без указания авторства.

Вот книга для программистов и о программистах.

Эдвард Йордон. "Путь камикадзе или как разработчику программного обеспечения выжить в безнадёжном проекте" («Смертельный марш»).

Если Вы считаете, что руководство ставит перед Вами непосильные задачи, что пользователи непроходимо тупы, что весь мир против Вас - прочтите книгу, и Вы узнаете, что Вы не одиноки.

И пусть книга написана уже давно, она по прежнему интересна.
Вложения
Тип файла: rar Эдвард Йордон Путь камикадзе.rar (300.7 Кб, 36 просмотров)
2
735 / 205 / 12
Регистрация: 16.01.2014
Сообщений: 682
12.10.2021, 12:08 37
Ещё одна книга о программистах и программном обеспечении.

Аджиев Валерий. Мифы о безопасном ПО - уроки знаменитых катастроф

Рекомендую прочитать.
Вложения
Тип файла: zip Adchiev_Valerii__Mify_o_bezopasnom_PO__uroki_znamenityh_katastrof.zip (31.4 Кб, 24 просмотров)
2
735 / 205 / 12
Регистрация: 16.01.2014
Сообщений: 682
12.10.2021, 14:13 38
В девятом посте в этой теме размещена моя статья о защите данных в базах Access. Она была написана в далёком 2007 году и устарела.

C тех пор прошло много времени, появился новый формат баз Access - accdb. Ушла в прошлое защита при помощи рабочих групп (в accdb она уже не поддерживается). Вот и я решил в 2017 году слегка причесать свою статью, добавить новые способы защиты. Подкорректировать старые.
Очень многое я нашел в интернете, так что не ищите здесь чего-то сверхординарного. Я просто попытался свести вместе, то что рассыпано по разным сайтам.

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

В приложении добавил статьи с сайта http://msvb.narod.ru
Защита и взлом баз данных Access
Статья довольно старая, за 2005 год. Но ещё достаточно актуальная. Очень подробно рассмотрены защиты для форматов MDB (97, 2000,2002-2003). И если формат MDB 97 уже практически не встречается, то 2000 и 2002-2003 ещё достаточно распространены.
Программы восстановления паролей Access
Статья так же за 2005 год. Сделан обзор программ, актуальных на то время.
Сейчас таких программ значительно больше. Как-то я попал на интернет-страницу с перечнем таких программ. Там их было более 50. И только одна из них была бесплатная.
Ну, поскольку, формат MDB c 2003 (или 2002) года не менялся, то обзором вполне можно пользоваться для работы с MDB базами.
Вложения
Тип файла: rar About_data_protection_in_RDBMS_files_Access_V2. 0.rar (37.7 Кб, 31 просмотров)
Тип файла: pdf Защита и взлом баз данных Access.pdf (115.2 Кб, 32 просмотров)
Тип файла: pdf Программы восстановления паролей Access.pdf (152.4 Кб, 27 просмотров)
0
735 / 205 / 12
Регистрация: 16.01.2014
Сообщений: 682
31.10.2022, 15:33 39
Ещё несколько статей.
Когда-то, в 2002 году мне в руки попалась книга Стивена Форта, Тома Хоуна и Джеймса Релстона «Microsoft Access 2000 Development». В переводе - "Access 2000. Программирование, производительность, защита, сетевые решения, интернет. Энциклопедия пользователя" издательства ДиаСофт. Мне она очень помогла. Вот я и подумал, почему бы не разместить статьи (главы) из этой книги здесь.
И так, первая серия статей - "Программирование на VBA."
Серия состоит из четырех частей.
- Создание объектов с помощью модулей классов;
- Отладка приложений Access;
- Профессиональная обработка ошибок;
- Оптимизация приложений.


Кроме текста, в архивах находятся и примеры.
Поскольку тогда существовал только формат MDB, то все примеры даны в этом формате.
Вложения
Тип файла: zip ProgrVBA1.zip (379.6 Кб, 10 просмотров)
Тип файла: zip ProgrVBA2.zip (198.2 Кб, 10 просмотров)
Тип файла: zip ProgrVBA3.zip (726.7 Кб, 8 просмотров)
Тип файла: zip ProgrVBA4.ZIP (111.3 Кб, 14 просмотров)
2
735 / 205 / 12
Регистрация: 16.01.2014
Сообщений: 682
02.11.2022, 13:34 40
Продолжаю выкладывать главы из книги Стивена Форта, Тома Хоуна и Джеймса Релстона «Microsoft Access 2000 Development».

Вторая серия "Взаимодействие приложений"
В серию входят три части:
1 - использование метода автоматизации ActiveX;
2 - интеграция с Office 2000
3 - использование Visual Basic совместно с Access.

В первой части описано:
- Что такое автоматизация ActiveX
- Для чего используется метод автоматизации
- Отличие сервера автоматизации от клиента автоматизации
- Определение требований к ресурсам автоматизации
- Общие принципы работы
- Создание и установка ссылок на другое приложение
- Присваивание приложению объектной переменной
- Запуск отдельной копии переменной
- Использование свойств и методов объекта Automation
- Освобождение объекта Automation
- Создание цельного проекта
- Закрытие приложения сервера автоматизации.


Во второй части описано взаимодействие Acccess с программами Офиса. Зачем нужна интеграция с Office?
Office представляет собой полный комплект программных продуктов, призванный удовлетворить запросы и потребности пользователей. Эти программные продукты обладают богатыми возможностями, внедренными и полностью протестированными компанией Microsoft. Office включает сотни объектов, которыми разработчики могут управлять программно с помощью VBA. Ни один другой офисный комплект сегодня не обеспечивает того уровня производительности и интеграции, который предлагает Office.

В этой части описано следующее:

- для чего нужна интеграция с Office
- выбор нужного инструментального средства
- вездесущий VBA
- использование модуля, запись макроса для написания кода
- использование автомакросов
- Microsoft Forms
- Браузер объектов
- аргументы классов для приложений Office


здесь описано так же взаимодействие со следующими программами Office:

- Word
- Exel
- PowerPoint
- Outlook
- Graph
- MapPoint
- FrontPage
- Binder


кратко сказано о защите документов, шаблонов и кода.

И хотя в статье описание дано для Office 2000, его с успехом можно использовать и для XP и для 2003-го. Ну и для следующих версий.

Третья часть представляет собой скорее познавательную информацию, чем руководство к действию. Visual Basic, о котором говорится в статье, безнадёжно устарел. Установка его на современные ОС проблематична. Я пробовал несколько раз его ставить на Windows 7. Неудачно. Кроме того он является 32-х разрядной системой и не может создавать элементы для 64-х разрядного офиса. Но тем, кто работает с 32-х разрядными версиями Access она может быть полезна. Энтузиасты создали портабильную версию VB6, с которой можно работать без её инсталляции на компьютере. (вес в архиве - 30 МБ) Можно поискать в интернете по названию архива visual-basic-6_0_0_9782 или Portable Microsoft Visual Basic 6.0 SP6. Может кто и заинтересуется.
Вложения
Тип файла: zip Automation1.zip (146.3 Кб, 9 просмотров)
Тип файла: zip Automation2.zip (2.40 Мб, 4 просмотров)
Тип файла: zip Automation3.zip (1.74 Мб, 4 просмотров)
1
02.11.2022, 13:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2022, 13:34
Помогаю со студенческими работами здесь

Wordpress-написание разных статей
Извиняюсь если заголовок не о чем. Писал до этого сайты с нуля (mvc). Но вот понадобилось...

Написание и хранение статей (контента) сайта
Здравствуйте. Не знаю как правильно сформулировать... Начал разбираться с ASP.NET MVC и столкнулся...

Каталоги статей, сколько статей стоит размещать
У меня вот такой вопрос. В нете существует, достаточно много бесплатных каталогов статей, из них...

Посоветуйте литературу по написание основам написание плагинов
пишу курсовую на тему, основы написание плагинов. Посоветуйте литературу.


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru