Azotirovanie.ru

Инженерные системы и решения
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Типы данных и свойства полей таблиц БД

Типы данных и свойства полей таблиц БД

В таблицах MS Access 2007 можно использовать десять типов данных:

§ текстовый – алфавитно-цифровые данные, максимальный объём 255 символов (255 байт);

§ поле МЕМО – длинный текст, числа (например, комментарии и пояснения), максимальный объём 63999 символа (64 Кбайта);

§ числовой – общий тип числовых данных (длина 1, 2, 4 или 8 байт) ;

§ дата/время – значения даты и времени (длина 8 байт);

§ денежный – денежные значения (длина 8 байт);

§ счётчик – уникальный номер (число), которое для каждой новой записи автоматически увеличивается на 1 (длина 4 байта);

§ логический – логические значения типа Да/Нет, Истина/Ложь или Вкл/Выкл (длина 1 бит);

§ поле объекта OLE – объект, созданный в другой программе (рисунок, таблица Excel, документ Word и т.д.);

§ гиперссылка – строка, состоящая из букв и цифр и представляющая адрес гиперссылки (объём до 2048 символов);

§ вложение – новый тип данных, позволяет хранить несколько документов (объектов) и двоичных файлов любых типов.

Каждому типу данных соответствует определённый набор свойств поля. Наиболее важными являются следующие:

§ размер поля – размер данных, которые будут храниться в поле, для текстового поля от 1 до 255 символов, для числового поля размер – это фактически тип числовых данных (Байт, Целое, Длинное целое, Одинарное с плавающей точкой, Двойное с плавающей точкой);

§ формат поля – формат отображения его значений при выводе на экран или печать;

§ маска ввода – устанавливает символы форматирования для их автоматического заполнения во время ввода данных;

§ подпись – задаёт альтернативное имя, которое будет появляться в качестве заголовка поля при просмотре таблицы или в созданных на её основе запросах, формах, отчётах;

§ значение по умолчанию – задаёт значение, автоматически вводящееся в поле при создании новой записи;

§ условие на значение – логическое выражение, определяющее условие для ввода данных, позволяет осуществлять контроль ввода;

§ пустые строки – если установить значение этого свойства равным «Да», то для текстового поля или поля МЕМО будет разрешён ввод пустых строк (пустая строка – это “”);

§ индексированное поле – позволяет создать индекс по данному полю (индекс указывает местоположение записей таблицы и помогает быстрее находить нужные данные);

§ сообщение об ошибке – текст сообщения, которое будет выведено на экран при вводе в поле данных, нарушающих условие на значение;

§ обязательное поле – указывает, обязателен ли ввод данных в это поле или нет.

Типы данных и значения используемых свойств поля указываются в конструкторе таблиц. Свойства поля, соответствующие выбранному типу данных, находятся на вкладке Общие в нижней части конструктора (рисунок 7).

Рисунок 7 – Конструктор таблиц

На вкладке Подстановка находятся свойства, отвечающие за создание в поле таблицы раскрывающегося списка значений. Список может содержать фиксированный набор значений или использовать данные из поля таблицы или запроса. В MS Access 2007 можно создавать списки, которые будут содержать более одного значения в поле. Для создания списка значений можно воспользоваться Мастером подстановок, который находится в списке типов данных. Основные шаги мастера показаны на рисунке 8.

Рисунок 8 – Создание списка значений Мастером подстановок

Практическое задание 2. Создание таблиц и межтабличных связей базы данных. Способы вода и редактирования данных

1. Запустите MS Access 2007, создайте и сохраните файл новой базы данных. Будьте внимательны! Эта база будет использоваться в дальнейшем в следующих лабораторных работах.

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

Товар

Имя поляТип данныхСвойства поля
Код_товаратекстовыйРазмер – 7 символов
НаименованиетекстовыйРазмер – 50 символов
ЦенаденежныйЧисло десятичных знаков – 2
Ед_измерениятекстовыйРазмер – 10 символов
Ставка_НДСчисловойРазмер – одинарное с плавающей точкой; Формат – процентный; Число десятичных знаков – 2; Значение по умолчанию – 0,18
НаличиелогическийФормат – да/нет

Поставщики

Имя поляТип данныхСвойства поля
Номер_поставщикатекстовыйРазмер – 6 символов
НаименованиетекстовыйРазмер – 50 символов
Регионтекстовый
Адрестекстовый
ТелефонтекстовыйМаска ввода – (9000")"900-00-00;;*
Примечаниеполе MEMO

Поставщики_контакты

Имя поляТип данныхСвойства поля
Номер_поставщикатекстовый (с помощью Мастера подстановки создать раскрывающийся список, содержащий данный из соответствующего поля таблицы Поставщики)
Фам_конт_лицатекстовый
Имя_конт_лицатекстовый
Отч_конт_лицатекстовый
Адрес_конт_лицатекстовый
Телефон_конт_лицатекстовыйМаска ввода – 00-00-00;;*

Поставки

Имя поляТип данныхСвойства поля
Дата_поставкидата/время

Формат – длинный формат даты; Условие на значение – первое полугодие текущего года (>=#01.01.2011# And <#01.07.2011#); Сообщение об ошибке – Ошибка даты
Количествочисловой
СтоимостьденежныйЧисло десятичных знаков – 2
Номер_поставщикатекстовый (с помощью Мастера подстановки создать раскрывающийся список, содержащий данный из соответствующего поля таблицы Поставщики)
Код_товаратекстовый (с помощью Мастера подстановки создать раскрывающийся список, содержащий данный из соответствующего поля таблицы Товар)
№_складатекстовый (с помощью Мастера подстановки создать раскрывающийся список, содержащий фиксированный набор значений: Склад А, Склад Б, Склад В, Склад Г, Склад Д)

3. Создайте межтабличные связи. Установите обеспечение целостности данных. Сохраните схему данных.

4. Откройте таблицы БД в режиме ввода и внесите данные. В таблицы Товар, Поставщики и Поставщики_контакты – по 20 позиции. В таблицу Поставки – 50 позиций (на данном этапе поле Стоимость не заполнять!).

5. В списке объектов базы данных выберите таблицу Товар. Откройте вкладку Создание и нажмите кнопку Форма. MS Access 2007 автоматически создаст составную форму по таблице Товар и связанной таблице Поставки. Форма будет открыта в режиме макета (рисунок 9). Перейдите в режим формы и дополните список товаров информацией о 10 новых товарах.

Рисунок 9 – Форма в режиме макета

Запросы на выборку к таблицам БД

Запросы на выборку (запросы на извлечение) позволяют искать и обрабатывать данные в базе, не изменяя её содержимого. Они могут быть следующих видов:

§ простые запросы на выборку;

§ запросы с вычисляемыми полями;

§ запросы с групповыми операциями (запросы с итогами);

Запросы с вычисляемыми полями позволяют производить вычисления на основе данных таблиц. Результат работы запроса – новое виртуальное (динамическое) поле, с результатом вычислений.

Запрос с групповой операцией отличается от простого запроса на выборку тем, что позволяет группировать данные по заданному полю и вычислять групповые итоги (осуществлять групповые операции) по заданным поля в группе. Возможно применение условий отбора. В MS Access предусмотрены следующие групповые операции:

§ Sum – сумма значений группы;

§ Avg – среднее значение для группы;

§ Max, Min – максимальное или минимальное значение в группе;

§ Count – количество непустых значений в группе;

§ StDev – среднеквадратичное отклонение в группе;

§ Var – дисперсия значений поля в группе;

§ First, Last – значение поля из первой и последней записи в группе.

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

По способу создание запросы можно разделить на QBE-запросы (Query by Example – запросы по образцу) и SQL-запросы. Первые строятся с помощью конструктора запросов, вторые с помощью операторов и функций языка SQL (Structured Query Language – язык структурированных запросов). Дополнительным средством создания запросов в MS Access является мастер запросов. Запросы можно создавать к таблицам, к другим запросам на выборку, одновременно к таблицам и запросам.

Результатом выполнения запроса на выборку является новая виртуальная (временная) таблица, не сохраняемая в базе данных. В запросе хранится структура запроса: таблицы, список полей, условия отбора записей и т.д., то есть фактически инструкция по поиску и отбору записей.

Последовательность действий при создании простого запроса на выборку:

§ определить, в какой таблице (или таблицах) содержатся искомые данные;

§ определить, по каким полям, каких таблиц будет происходить отбор данных, сформулировать критерии отбора;

§ запустить конструктор запросов, добавить выбранные таблицы;

§ если запрос многотабличный убедится, что между таблицами (запросами, таблицами и запросами), включёнными в запрос существует связь;

§ указать в таблице конструктора запросов поля, содержащие искомые данных;

§ указать поля, по которым осуществляется отбор данных, ввести критерии отбора;

§ сохранить запрос под выбранным именем и запустить его.

Для создания запроса с групповыми операциями или перекрестного запроса необходимо дополнительно:

§ определить, по каким полям будет осуществляться группировка данных;

§ определить вид групповой операции и поле, к которому она будет применена.

Операторы, используемые для создания условий отбора записей в запросах, и примеры условий отбора представлены в таблице 2.

Таблица 2 – Условия отбора записей

ОператорПример
> < >= <= <> And Or“Пылесос” (знак = можно не указывать) <>”Иванов” “директор” Or “бухгалтер” Or “менеджер” Or “сторож” >= 1200 <> 420 >100 And <200 <=#01.12.2010# >#01.07.2010# >=#01.02.2011# And <#01.03.2011# #12.10.2010# Or #12.11.2010# <>ложь Is Null – незаполненные ячейки
Between проверка интервала для числового, денежного значения или датыBetween 375 And 750 Between #01.02.2011# And #01.03.2011#
In проверка на равенство любому значению из спискаIn (258;32;16) In (“Иванов”;”Петров”;”Сидоров”;”Степанов”) In (#12.06.2010#;#12.07.2010#;#12.08.2010#;#12.09.2010#)
Like разрешает использовать образцы и символы шаблона: * – любое количество символов; ? – один любой символ; # – одна любая цифраLike “A*” Like “A*ов” Like “*телевизор*” Like “*ов” Like “. ов” Like "[ИПС]*" (текстовое значение начинается с любого из указанных символов) Like "[!ИПС]*" (текстовое значение не начинается с любого из указанных символов) Like "[И-С]*" (текстовое значение начинается с букв от И до С)

Практическое задание 3. Создание запросов на выборку к таблицам базы данных

Запустите MS Access 2007 и откройте базу данных по учёту торговли, созданную на предыдущем занятии. Создайте запросы к таблицам базы данных, позволяющие получить заданную информацию. Таблицы БД, включаемые в запрос, и критерии отбора записей определяйте самостоятельно.

Типы данных полей Access

4. Подготовить отчет по результатам лабораторной работы.

Дадим краткое определение базы данных.

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

Access—это гибкая программа,позволяющая работать как с простыми,так исо сложными базами данных. Следует добавить, что это реляционная база данных, то есть база данных, которая позволяет определять отношения между различными категориями информации (как, например, между данными об отделах и данными

о их сотрудниках). В результате вы имеете возможность пользоваться данными совместно.

Начало работы

Чтобы запустить Access, щелкните на кнопке Microsoft Access 2007 на панели инструментов Microsoft Office или на кнопке Пуск (Start) на панели задач и выберите команду Программы > Microsoft Access (Programs > Microsoft Access). Когда Access начнет работу, вы увидите окно диалога, показанное ниже:

Начальное окно диалога Access позволяет создать новый файл базы данных Access или открыть файл, с которым вы уже работали

Компоненты базы данных Access

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

1. Таблицы—содержат данные.

2. Запросы—позволяют задавать условия для отбора данных и вноситьизменения в данные

3. Формы—позволяют просматривать и редактировать информацию.

4. Отчеты—позволяют обобщать и распечатывать информацию.

Примечание:Все работы по созданию,изменению,добавлению втаблицах , формах, запросах делаются в режиме Конструктора (правая кнопка мыши на имени объекта и Конструктор).

Выбор типа полей

Следующий этап после составления плана полей для таблиц — это выбор типа полей. Тип поля определяет данные, которые можно вводить в это поле, формат, который может иметь значения этого поля, и операции, которые можно выполнять с данными этого поля.

Типы данных полей Access

В Access имеется множество типов полей. Они перечислены ниже с указанием назначения каждого типа.

Счетчик (AutoNumber). В это поле Access автоматически вводит номер при добавлении каждой новой записи в таблицу.

Денежный (Currency). Этот тип поля предназначен для ввода денежных значений. Дата/время (Date/Time). В это поле вводится дата или время, либо их комбинация.

Гиперссылка (Hyperlink). Данное поле содержит адреса гиперссылок, которые используются для перехода к Web-страницам, объектам базы данных или другим файлам.

Мастер подстановок (Lookup Wizard). В поле этого типа запускается Мастер подстановок, который налагает ограничения на значения в поле. Значения/результаты поиска могут поступать из вводимого вами списка, таблицы или запроса.

Поле MEMO (Memo). Поле этого типа может содержать текст неограниченной длины.

Числовой (Number). В поле этого типа могут вводиться числовые данные любого формата.

Поле объекта OLE (Object Linking and Embedding, Связь и внедрение объектов) содержит такие объекты, как рисунки и документы Word.

Текстовый (Text). Поле этого типа содержит текст: письма, числа и другие символы.

Логический (Yes/No). В поле данного типа сохраняется одно из двух возможных значений: «истина» или «ложь». Этими значениями могут быть «да/нет», «истина/ложь», «мужчина/женщина» и т. д.

Создание таблиц

Выбираем в главном меню: Создание Æ Конструктор таблиц. Создание таблицы базы данных Employee в конструкторе таблиц. Набираем имя поля и, в следующем столбце, из раскрывающего списка

выбираем тип данных. Для поля, хранящего изображение, выбираем тип поля Поле объекта OLE

Задание ключевого поля:

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

Внизу в окне Свойства поля для стороны связи 1 указываем, что совпадения не допускаются

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

Перемещение поля

Как только в макет таблицы добавлено поле, вы можете перетащить его на новое место.

1. Для выделения поля щелкните на области выделения строки слева от названия поля (чтобы выделить несколько идущих друг за другом полей, следует нажать кнопку мыши и протащить указатель по нескольким строкам, не отпуская при этом кнопки мыши).

2. Установите курсор на выбранном поле (выбранных полях), нажмите кнопку мыши и перетащите поле (поля) на новое место. Во время перетаскивания снизу указателя появится небольшой пунктирный прямоугольник, а тонкая горизонтальная линия укажет вам возможное место вставки.

Вставка поля

Вставить поле в середину списка полей, а не в конец списка, можно следующим образом.

1. Щелкните на области выделения той строки, над которой необходимо вставить строку нового поля.

2. Нажмите клавишу Insert или щелкните на кнопке панели инструментов Insert Rows (Добавить строки).

3. Введите в новую строку название поля и задайте его тип.

Удаление поля

Удалить поле еще проще, чем вставить.

1.Выберите поле (поля), которое (которые) необходимо удалить.

2. Нажмите на клавишу Delete или щелкните на кнопке Удалить строки (Delete Rows) на панели инструментов.

Если вы допустили ошибку, выберите в меню Правка (Edit) пункт Отменить удаление(Undo Delete),и удаленные строки вернутся на прежнее место.Однакоесли после удаления вы выполнили другое действие, то вы уже не сможете отменить удаление. В этом случае существует единственный способ восстановить поля таблицы, но при условии, что таблица была предварительно сохранена, — необходимо закрыть окно конструктора без сохранения внесенных вами в макет таблицы изменений.

Access 2007 тип данных счетчик


UnDISCOvery   ( 2005-12-22 15:16 ) [0]

Привет,Мастера!
Подскажите — какое максимальное значение поля "счетчик"?
И что произойдет если кол-во записей превышает это значение?
Нарушиться ли уникальность индекса по этому полю?


DSKalugin ©   ( 2005-12-22 15:25 ) [1]

1- большое,
2-этого не произойдет
3- нет


Anatoly Podgoretsky ©   ( 2005-12-22 15:28 ) [2]

2. База лопнет


UnDISCOvery   ( 2005-12-22 15:34 ) [3]

Очень конструктивные ответы, спасибо 🙂
большое — это какое? если он 32 разрядный без знака- то это 4 миллиарда, а если нет?
когда-нибудь это пройзойдет, ничто не вечно под луной 🙂

лопнувшая база — это пять. 🙂


Anatoly Podgoretsky ©   ( 2005-12-22 15:53 ) [4]

UnDISCOvery   (22.12.05 15:34) [3]
Выдай информацию по количеству добавлений в секунду на протяжении одного года.
А насчет лопнет это не шутка, есть ограничение на размер базы — 2 гб

тогда 2 миллиарда
🙂

>когда-нибудь это пройзойдет, ничто не вечно под луной 🙂

Тебя тогда уже не будет на свете. )


sniknik ©   ( 2005-12-22 15:58 ) [6]

> то это 4 миллиарда, а если нет?
то тоже, но со знаком

> когда-нибудь это пройзойдет, ничто не вечно под луной 🙂
тебя это волновать уже лет сто как не будет. или собираешся жить вечно?

> А насчет лопнет это не шутка, есть ограничение на размер базы — 2 гб
чисто для информации, недавно узнал, новый MSDE 2005 (замена аксессу) бедет/есть поддерживать 4 гб. (на старый с тем же 2 гб. ограничением не слишком активно переходили. 😉


sniknik ©   ( 2005-12-22 15:59 ) [7]

> тогда 2 миллиарда
не, оно "переваливает" в минус и дальше считает. специально проверял когдато.


Johnmen ©   ( 2005-12-22 16:15 ) [8]

>не, оно "переваливает" в минус и дальше считает. специально проверял когдато.

тогда именно до 2 млрд, а потом минус.


Anatoly Podgoretsky ©   ( 2005-12-22 16:24 ) [9]

sniknik ©   (22.12.05 15:58) [6]
Так и есть, плюс есть ГУИ инструмент, но есть и плохие новости — или GUI или BOL


Anatoly Podgoretsky ©   ( 2005-12-22 16:26 ) [10]

sniknik ©   (22.12.05 15:59) [7]
Оно считает как Cardinal, это просто интерпритация его как Integer


sniknik ©   ( 2005-12-22 17:46 ) [11]

> Оно считает как Cardinal, это просто интерпритация его как Integer
;о), ну минус на самом деле есть чистая абстракция, видимость, глюк, "сдвиг"  на последнем бите. ;о)

просто в самом аксесе поле счетчика определено именно длинным целым Long Integer (Default) Stores numbers from –2,147,483,648 to 2,147,483,647 (no fractions).


sniknik ©   ( 2005-12-22 17:48 ) [12]

> или GUI или BOL
ну. BOL можно и отдельно поставить. надеюсь. как в 2000м было.


Anatoly Podgoretsky ©   ( 2005-12-22 17:53 ) [13]

sniknik ©   (22.12.05 17:48) [12]
Не уверен, пока такой информации нет.


sniknik ©   ( 2005-12-22 18:03 ) [14]

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

ну покрайней мере на две машины рядом можно поставить ;о))


UnDISCOvery   ( 2005-12-22 18:20 ) [15]

Anatoly Podgoretsky ©   (22.12.05 15:53) [4]
Выдай информацию по количеству добавлений в секунду на протяжении одного года.

Выдаю:
— в секунду 50 добавлений
— в минуту 3000
— в час 180.000
— в сутки 4.320.000
— в месяц 129.600.000
— в год 1.576.800.000

3 года работы — всего-то 🙂

А насчет лопнет это не шутка, есть ограничение на размер базы — 2 гб

 и что произойдет при попытке добавить запись в базу размером 2 Гб?
 Исключение? Или все повиснет нафиг?


Anatoly Podgoretsky ©   ( 2005-12-22 18:26 ) [16]

1.576.800.000 только записей, а они же у тебя не размером в один байт?


UnDISCOvery   ( 2005-12-22 18:35 ) [17]

безусловно 🙂
я все понял — спасибо!


sniknik ©   ( 2005-12-22 21:50 ) [18]

> — в секунду 50 добавлений
не черезчур. получается (в смысле удается 50 в сек положить)?

4 байта только на ингремент, т.е. год у тебя примерно 6 гигов. одного автоинкрмента ;о)

> и что произойдет при попытке добавить запись в базу размером 2 Гб?
проблемы начнутся немного раньше гдето на 1,7-1,8 гига базы сжатого размера (т.е. смотреть размер сразу после "сжатия — восстановления")
правда я проверял не на одиночных записях, а на "реальной работе" (имитации), начинались тормоза, слеты (AV в обьекте Jet) и вплоть до полного разрушения базы (восстановить не удалось).
но вообще надо это все еше проверять, я проверял на jet sp6, счас уже есть sp8. вышли из положения сделав поддержку архивных баз, т.е. та же самая база но туда нельзя писать только читать, рабочая получается одна для отчетов все найденные, и рекомендуем клиентам сливать все "лишние" данные до достижения критического обьема, который сами "назначили" в 1.5 гиг (с запасом ;).


lost_delpher   ( 2005-12-23 13:40 ) [19]

Я не пойму зачем прикалываться?
вопрос очень актуальный — по крайней мере я обрабатывал большие объемы в АКЦЕССЕ и тогда возможна ситуация превышения счетчиком 2 миллиарда.
Может быть ситуация вставки и удаления большого числа строк

можно смоделировать ситуацию превышения —
создай таблицу — к примеру

код- счетчик
и любое поле
r — integer обзови ее скажем —  er

и код в Акцессе

Public Sub errt()
Dim rst As DAO.Recordset, dbs As DAO.Database, i As double
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("er")
For i = 1 To 2147483647 +1
rst.AddNew
rst![r] = i
If i Mod 10000 = 0 Then
Debug.Print rst![kod] " вывод в окно отладки значения  счетчика каждые 1000
DoEvents
End If
Next i
End Sub

запусти эту прогу и через пару часов посмотри что произойдет
мне тоже интересно
и база у тебя совсем не вырастет


lost_delpher   ( 2005-12-23 13:51 ) [20]

извиняюсь — надо вместо
rst![r] = i  - rst![r] = 1


UnDISCOvery   ( 2005-12-23 13:54 ) [21]

скорей всего база превысит макс. размер — и пойдут ошибки


lost_delpher   ( 2005-12-23 13:58 ) [22]

Возможна ситуация — когда не превысит


UnDISCOvery   ( 2005-12-23 14:07 ) [23]

посчитай .

sniknik ©   (22.12.05 21:50) [18]
— просто в самом аксесе поле счетчика определено именно длинным целым Long   Integer (Default) Stores numbers from –2,147,483,648 to 2,147,483,647 (no fractions).
-4 байта только на инкремент .


lost_delpher   ( 2005-12-23 14:15 ) [24]

в том коде — который я привел выше — запись не сохраняется — и размер базы не растет — растет только инкремент


UnDISCOvery   ( 2005-12-23 14:24 ) [25]

Ну и какой тогда смысл? Не пойму :-/
Счетчик просто будет по кругу


sniknik ©   ( 2005-12-23 14:28 ) [26]

> в том коде — который я привел выше — запись не сохраняется — и размер базы не растет — растет только инкремент
тогда тебе его размерность вообще пофигу, он цикличный.


lost_delpher   ( 2005-12-23 14:36 ) [27]

Здесь был вопрос о том что будет с инкрементом — я предложил проверить — что значит цикличный — т.е. он сбрасывает счетчик через цикл ?
тогда можно попробовать сохранять одно значение — через скажем — миллион записей и посмотреть что будет.


sniknik ©   ( 2005-12-23 14:50 ) [28]

> Здесь был вопрос о том что будет с инкрементом
на который уже был ответ. надо сначала читать ветки прежде чем свое постить.

> я предложил проверить — что значит цикличный — т.е. он сбрасывает счетчик через цикл ?
а самому свое предложение реализовать?

то и значит, добавление без учета переполнения отбрасывая "вылезшую" за предел типа часть
CREATE TABLE Tbl (ID INT Identity(1, 1000000000), Name VarChar(30))

INSERT INTO Tbl (Name) VALUES ("1")
.
INSERT INTO Tbl (Name) VALUES ("14")

Ну, ну
  ситуации ведь разные бывают:

 Записываются данные много и долго, при этом старые (отработанные, ненужные) удаляются причем может остаться запись под нр. <1> и <1.000.000. > размер базы в "Мб" будет, а щетчк. 🙁

 Вопрос действительно интересен


Anatoly Podgoretsky ©   ( 2005-12-23 15:33 ) [31]

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


lost_delpher   ( 2005-12-23 15:53 ) [32]

Anatoly Podgoretsky
Код я привел человеку чтобы он проверил — и нашел ответ на свой основной вопрос, ответ он кстати так пока и не получил.

>sniknik
и вопрос был что будет с инкременентом после превышения макс. значения — а не с размером базы и проч.
писали — уйдет в минус — а после минуса что ?

CREATE TABLE Tbl (ID INT Identity(1, 1000000000), Name VarChar(30))

такие выражения не прокатят в Акцесс я не помню точно, кажектся инкременет там с 1 начинается

и вообще я предложил способ проверки — за день счетчик может увеличится и на 2 миллиарда — что все накинулись ?


Silver. ©   ( 2005-12-23 16:01 ) [33]


> Ты сначала добавь такое количество

а в чем проблема-то ?

запись показаний какогонибудь датчика .

. думаю не проблемма


lost_delpher   ( 2005-12-23 16:05 ) [34]

а ситуация вполне реальная и не такая уж невозможная — например при транзакции счетчик  в Акцесс увеличивается , и при откатах не уменьшается — так что если вы вставляете несколько миллионов записей и потом откатываете — можете получить ситуацию когда счетчик будет зашкаливать


Anatoly Podgoretsky ©   ( 2005-12-23 16:08 ) [35]

lost_delpher   (23.12.05 15:53) [32]
Не увеличится ни на одну единицу, записи в базу нет, это локальные игры.


Anatoly Podgoretsky ©   ( 2005-12-23 16:10 ) [36]

Silver. ©   (23.12.05 16:01) [33]
А я думаю ты не понял, размер поля 4 байта, а размер базы всего 2 гб. Даже на заявленой скорости добавления потребуется более года, а она не получится раньше база лопнет, а если удалять и сжимать то о такой скорости говорить не приходится.


lost_delpher   ( 2005-12-23 16:15 ) [37]

>Anatoly Podgoretsky
просто попробуй в акцесс с учетом создания таблицы
я пробовал и счетчик действительно увеличивается


Public Sub sdd()
Dim wrk As Workspace, i As Integer
Set wrk = DBEngine.Workspaces(0)
wrk.BeginTrans
For i = 1 To 20
CurrentDb.Execute ("insert into er (r) values (1) ")

Next i
wrk.Rollback
End Sub

не забыть кстати добавить ссылку на ДАО 3.6 в проекте


Anatoly Podgoretsky ©   ( 2005-12-23 16:17 ) [38]

lost_delpher   (23.12.05 16:15) [37]
Теперь вместо 20 сделай 4 миллиарда и сообщи на каком номере у тебя загнется база и также сообщи удастся ли тебе ее каким ни будь образом восстановить


sniknik ©   ( 2005-12-23 17:14 ) [39]

> и вопрос был что будет с инкременентом после превышения макс. значения — а не с размером базы и проч.
> писали — уйдет в минус — а после минуса что ?
а что бывает с минус еденицей при добавлении еденицы? нулем становится естественно. 😉

> CREATE TABLE Tbl (ID INT Identity(1, 1000000000), Name VarChar(30))
> такие выражения не прокатят в Акцесс я не помню точно, кажектся инкременет там с 1 начинается
> и вообще я предложил способ проверки — за день счетчик может увеличится и на 2 миллиарда — что все накинулись ?
вот когда вспомниш точно, тогда и "накидки" прекратятся, которые на самом деле являются попытками ответить на твои же вопросы.
инкремент там стандартно начинается с 1, при явном указании  с той цифры которая указана. (кстати тут указано не начало 😉


Silver. ©   ( 2005-12-23 18:08 ) [40]


> А я думаю ты не понял

да всё я прекрасно понял:

скажем на момент "X" мы имеем ОДНУ запись с >
Вопрос где загиб БД по лимиту 2(4)ГБ она и 1Мб не наберет 🙂 а вот загиб ID мы получили, потому как скорее всего (не утверждаю) ID продолжится заново с <1> или.
 А если у меня есть др. записи с то как быть со связями

ПыСы: мне думается это не вопрос тока к Access-у но и к др. СУБД

5. Таблицы MS Access

Таблицы — основные объекты БД. Без запросов, форм, отчетов и прочего можно обойтись, но если нет таблиц, то, значит, нет и базы данных.

Создание таблицы состоит в задании ее полей и назначении их свойств. Оно начинается с щелчка на кнопке "Создать" на вкладке "Таблицы"в окне базы данных, после чего откроется диалоговое окно, представленное на рисунке 5.1.1.

Создание новой таблицы

Как видно на рисунке 5.1.1, существует несколько способов создания новой таблицы.

  1. Импорт таблиц из другой базы, может быть, даже созданной в другой системе. В зависимости от обстоятельств из импортируемой таблицы может поступить структура полей, их названия и свойства, а также и содержимое базы. Если что-то импортируется не совсем так, как надо, необходимые правки (например, изменение свойств полей) вносят вручную.
  2. В тех случаях, когда речь идет о чужой таблице, которая находится на удаленном сервере и которую нельзя импортировать целиком, пользуются режимом Связь с таблицами. Это напоминает подключение к таблице для совместного использования ее данных.
  3. Использование Мастера таблиц. Мастер задает ряд вопросов и, руководствуясь полученными ответами, создает структуру таблицы автоматически. Несмотря на то что этот режим служит для упрощения работы, начинающим пользоваться им не рекомендуется, поскольку, не владея всей терминологией, легко запутаться в вопросах и ответах. Первые таблицы стоит попробовать создать вручную.
  4. Пункт Режим таблицы открывает заготовку, в которой все поля имеют формальные имена: Поле1, Поле2. и т. д. и один стандартный текстовый тип. Такую таблицу можно сразу наполнять информацией.
  5. Использование Конструктора. В этом режиме можно самостоятельно задать имена полей, выбрать их тип и настроить свойства, как показано на рисунке 5.1.2.

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

5.2. Типы данных в MS Access. Их использование и размеры

Тип данных

Когда используется

Размер

Числовые, денежные и логические типы данных, а также Дата/Время, обеспечивают определенные ранее форматы отображения. Для выбора форматов для каждого типа данных определите свойство "Формат поля". Также можно создать пользовательский формат отображения для всех данных, кроме объектов OLE.

5.3. Создание связей между таблицами в MS Access

Для создания связей между таблицами СУБД Access имеет специальное диалоговое окно, которое называется "Схема данных" (см. Рисунок 5.3.1).

Окно "Схема данных"

* Примечание: Разумеется, одновременно несколько контекстных меню (контекстные меню вызываются нажатием правой кнопки "мыши") на экране отображаться не могут. На рисунке 5.3.1 несколько контестных меню представлены для наглядности.

Окно "Схема данных" открывают щелчком на одноименной кнопке панели инструментов или командой "Сервис" → " Схема данных". Если ранее никаких связей между таблицами базы не было, то при открытии окна "Схема данных" одновременно открывается окно "Добавление таблицы" (см. рисунок 5.3.2), в котором можно выбрать нужные таблицы для включения в структуру межтабличных связей. Если связи между таблицами уже были заданы, то для введения в схему данных новой таблицы надо щелкнуть правой кнопкой мыши на схеме данных и в контекстном меню выбрать пункт "Добавить таблицу".

Добавление таблиц в схему данных

Добавив в схему данных все таблицы, которые необходимо связать, можно приступать к созданию связей между полями таблиц. Связь между полями таблиц устанавливают путем перетаскивания имени поля из одной в таблицы в другую на соответствующее ему связанное поле, после чего открывается диалоговое окно "Связи", в котором можно задать свойства образующейся связи (см. рисунок 5.3.3).

Изменение свойств связи

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

  1. Связанное поле главной таблицы является ключевым полем или имеет уникальный индекс.
  2. Связанные поля имеют один тип данных. Здесь существует два исключения. Поле счетчика может быть связано с числовым полем, если в последнем в свойстве "Размер поля "(Field Size) указано значение "Длинное целое". А также поле счетчика можно связать с числовым полем, если и в обеих ячейках свойства "Размер поля" (Field Size) задано значение "Код репликации".
  3. Обе таблицы принадлежат одной базе данных MS Access. Если таблицы являются связанными, то они должны быть таблицами MS Access. Для установки целостности данных база данных, в которой находятся таблицы, должна быть открыта. Для связанных таблиц из баз данных других форматов установить целостность данных стандартными средствами MS Access невозможно.
  1. Невозможно ввести в поле внешнего ключа связанной таблицы значение, не содержащееся в ключевом поле главной таблицы. Однако в поле внешнего ключа возможен ввод пустых значений, показывающих, что записи не являются связанными. Например, нельзя сохранить запись, регистрирующую заказ, сделанный несуществующим клиентом, но можно создать запись для заказа, который пока не отнесен ни к одному из клиентов, если ввести пустое значение в поле "Код Клиента".
  2. Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице. Например, невозможно удалить запись из таблицы "Сотрудники", если в таблице "Заказы" имеются заказы, относящиеся к данному сотруднику.
  3. Невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данной. Например, невозможно изменить код сотрудника в таблице "Сотрудники", если в таблице "Заказы" имеются заказы, относящиеся к этому сотруднику.

Чтобы наложить эти правила на конкретную связь, при ее создании следует установить флажок . Если данный флажок установлен, то любая попытка выполнить действие, нарушающее одно из перечисленных выше правил, приведет к выводу на экран предупреждения, а само действие выполнено не будет.

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

голоса
Рейтинг статьи
Читайте так же:
Счетчики для топлива самотеком
Ссылка на основную публикацию
Adblock
detector