Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Использование системы CASE Studio для проектирования концептуальной и физической моделей базы данных




CASE Studio является профессиональным инструментом проектирования баз данных. Система предназначена для визуального создания и модификации диаграмм "сущность-связь" (ERD) и диаграмм потоков данных (DFD). Уровень представления ER-диаграмм может быть различен: от простейшего вида (имена сущностей и связи между ними) и до полной физической модели для выбранной СУБД. Сложные модели данных могут быть разбиты на отдельные логические фрагменты - субмодели.

Для разработанных диаграмм далее может быть сгенерирован программный код для создания таблиц, индексов, связей, хранимых процедур, пользователей и других компонентов различных СУБД (см. табл. 3.7.). Кроме того, предусмотрена возможность генерации ER-диаграмм для существующей базы данных (Reverse Engineering) с использованием для связи с БД прямого соединения, ODBC или ADO-драйверов.

При создании новой модели данных следует задать, для какой СУБД она проектируется, т.к. CASE Studio имеет возможность построения полной физической модели базы данных с использованием индивидуальных свойств каждой БД - типы и свойства атрибутов (стандартные БД и пользователя), возможности описания ключей (первичные и внешние), связей, условий соблюдения ссылочной целостности, пользователей и их групп (ролей); возможности написания хранимых процедур и пр. В последующем можно будет выполнить конверсию физической модели для другой СУБД (меню Model - Database Convertion) с сохранением в виде копии.

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


увеличить изображение
Рис. 3.2. Простейший вид ER-диаграммы в системе CASE Studio

Далее для каждой сущности в окне свойств (рис. рис. 3.4) можно задать название соответствующей ей таблицы в физической модели, названия атрибутов концептуальной модели и полей физической модели с указанием их типа, размера, с заданием ключей, надписей (Notes), описаний и пр. Следует отметить, что для описания полей физической модели необходимо знать типы данных той СУБД, для которой она разрабатывается. В последующем будут разобраны типы данных полей в системах Visual FoxPro, Microsoft Access и Microsoft SQL Server.


Рис. 3.3. Окно описания свойств связи


Рис. 3.4. Окно описания свойств сущности и таблицы

После описания всех атрибутов и полей может быть использована различная детализация показа концептуальной (в меню View - Display Level, см. рис. 3.5) и физической (в меню View нужно поставить галочку у позиции Physical View) моделей.


Рис. 3.5. Меню задания режима показа модели

На рис. 3.6 показана концептуальная модель для описанного выше примера, на рис. рис. 3.7 - физическая модель для СУБД Oracle 9i.


увеличить изображение
Рис. 3.6. Концептуальная модель базы данных


увеличить изображение
Рис. 3.7. Физическая модель базы данных

Далее можно описать права групп пользователей и права отдельных пользователей (меню системы пункт Model - Users Roles и Model - Users), если эту информацию нужно использовать при создании базы данных.

На основе описания физической модели был сгенерирован текст программ для создания базы данных в СУБД Oracle (в меню системы пункт Model - Script Generation) и, после конвертации модели, - для Microsoft Access.

Сгенерированная Case Studio SQL-программа создания таблиц базы данных для сервера Oracle

/*Created 02.02.2006Modified 03.02.2006Project KontingentModel StudentsCompany AGTUAuthor GroshevVersion 2006.1Database Oracle 9i */Create table "Student" ("Nz" Char(7) NOT NULL, "Fio" Char(45), "date_p" Date, "n_fclt" Decimal(2,0) NOT NULL, "n_spect" Char(9) NOT NULL, "kurs" Decimal(1,0), "n_grup" Char(10), "n_pasp" Char(10)) /Create table "Ocenki" ("semestr" Decimal(2,0), "n_predm" Decimal(2,0) NOT NULL, "ball" Char(1), "data_b" Date, "Prepod" Char(45), "Nz" Char(7) NOT NULL) /Create table "Predmet" ("n_predm" Decimal(2,0) NOT NULL, "name_p" Char(120)) /Create table "FCLT" ("n_fclt" Decimal(2,0) NOT NULL, "name_f" Char(120)) /Create table "SPECT" ("n_spect" Char(9) NOT NULL, "name_S" Char(120)) /Alter table "Student" add primary key ("Nz") /Alter table "Predmet" add primary key ("n_predm") /Alter table "FCLT" add primary key ("n_fclt") /Alter table "SPECT" add primary key ("n_spect")/Alter table "Ocenki" add foreign key ("Nz") references "Student" ("Nz") on delete cascade/Alter table "Ocenki" add foreign key ("n_predm") references "Predmet" ("n_predm") on delete cascade/Alter table "Student" add foreign key ("n_fclt") references "FCLT" ("n_fclt") on delete cascade/Alter table "Student" add foreign key ("n_spect") references "SPECT" ("n_spect") on delete cascade/-- Update trigger for StudentCreate Trigger "tu_Student" after update of "Nz","n_fclt","n_spect"on "Student" referencing new as new_upd old as old_upd for each rowdeclare numrows integer;begin -- cascade child Ocenki update when parent Student changed if (:old_upd."Nz"!=:new_upd."Nz") then begin update "Ocenki" set "Nz" =:new_upd."Nz" where "Ocenki"."Nz" =:old_upd."Nz"; end; end if; -- restrict parent SPECT when child Student updated if:new_upd."n_spect"!=:old_upd."n_spect" then begin select count(*) into numrows from "SPECT" where:new_upd."n_spect" = "SPECT"."n_spect"; if (numrows = 0) then begin RAISE_APPLICATION_ERROR(-20002,'Parent does not exist. Cannot update child.'); end; end if; end; end if; -- restrict parent FCLT when child Student updated if:new_upd."n_fclt"!=:old_upd."n_fclt" then begin select count(*) into numrows from "FCLT" where:new_upd."n_fclt" = "FCLT"."n_fclt"; if (numrows = 0) then begin RAISE_APPLICATION_ERROR(-20002,'Parent does not exist. Cannot update child.'); end; end if; end; end if; end;/-- Update trigger for OcenkiCreate Trigger "tu_Ocenki" after update of "n_predm","Nz"on "Ocenki" referencing new as new_upd old as old_upd for each rowdeclare numrows integer;begin -- restrict parent Predmet when child Ocenki updated if:new_upd."n_predm"!=:old_upd."n_predm" then begin select count(*) into numrows from "Predmet" where:new_upd."n_predm" = "Predmet"."n_predm"; if (numrows = 0) then begin RAISE_APPLICATION_ERROR(-20002,'Parent does not exist. Cannot update child.'); end; end if; end; end if; -- restrict parent Student when child Ocenki updated if:new_upd."Nz"!=:old_upd."Nz" then begin select count(*) into numrows from "Student" where:new_upd."Nz" = "Student"."Nz"; if (numrows = 0) then begin RAISE_APPLICATION_ERROR(-20002,'Parent does not exist. Cannot update child.'); end; end if; end; end if; end;/-- Update trigger for PredmetCreate Trigger "tu_Predmet" after update of "n_predm"on "Predmet" referencing new as new_upd old as old_upd for each rowdeclare numrows integer;begin -- cascade child Ocenki update when parent Predmet changed if (:old_upd."n_predm"!=:new_upd."n_predm") then begin update "Ocenki" set "n_predm" =:new_upd."n_predm" where "Ocenki"."n_predm" =:old_upd."n_predm"; end; end if;end;/-- Update trigger for FCLTCreate Trigger "tu_FCLT" after update of "n_fclt"on "FCLT" referencing new as new_upd old as old_upd for each rowdeclare numrows integer;begin -- cascade child Student update when parent FCLT changed if (:old_upd."n_fclt"!=:new_upd."n_fclt") then begin update "Student" set "n_fclt" =:new_upd."n_fclt" where "Student"."n_fclt" =:old_upd."n_fclt"; end; end if;end;/-- Update trigger for SPECTCreate Trigger "tu_SPECT" after update of "n_spect"on "SPECT" referencing new as new_upd old as old_upd for each rowdeclare numrows integer;begin -- cascade child Student update when parent SPECT changed if (:old_upd."n_spect"!=:new_upd."n_spect") then begin update "Student" set "n_spect" =:new_upd."n_spect" where "Student"."n_spect" =:old_upd."n_spect"; end; end if;end;/-- Insert trigger for StudentCreate Trigger "ti_Student" after inserton "Student" referencing new as new_ins for each rowdeclare numrows integer;begin-- restrict child Student when parent SPECT insertif (:new_ins."n_spect" is not null) then begin select count(*) into numrows from "SPECT" where:new_ins."n_spect" = "SPECT"."n_spect"; IF (numrows = 0) then begin RAISE_APPLICATION_ERROR(-20004,'Parent does not exist. Cannot insert child.'); end; end if; end;end if;-- restrict child Student when parent FCLT insertif (:new_ins."n_fclt" is not null) then begin select count(*) into numrows from "FCLT" where:new_ins."n_fclt" = "FCLT"."n_fclt"; IF (numrows = 0) then begin RAISE_APPLICATION_ERROR(-20004,'Parent does not exist. Cannot insert child.'); end; end if; end;end if;end;/-- Insert trigger for OcenkiCreate Trigger "ti_Ocenki" after inserton "Ocenki" referencing new as new_ins for each rowdeclare numrows integer;begin-- restrict child Ocenki when parent Predmet insertif (:new_ins."n_predm" is not null) then begin select count(*) into numrows from "Predmet" where:new_ins."n_predm" = "Predmet"."n_predm"; IF (numrows = 0) then begin RAISE_APPLICATION_ERROR(-20004,'Parent does not exist. Cannot insert child.'); end; end if; end;end if;-- restrict child Ocenki when parent Student insertif (:new_ins."Nz" is not null) then begin select count(*) into numrows from "Student" where:new_ins."Nz" = "Student"."Nz"; IF (numrows = 0) then begin RAISE_APPLICATION_ERROR(-20004,'Parent does not exist. Cannot insert child.'); end; end if; end;end if;end;/Create role "Stud_admin"/Create role "Dekan"/Grant "Stud_admin" to "Petrov_P_P"/Grant "Dekan" to "Иванов_И_И"//* Roles permissions */Grant select on "Student" to "Stud_admin"/Grant update on "Student" to "Stud_admin"/Grant delete on "Student" to "Stud_admin"/Grant insert on "Student" to "Stud_admin"/Grant references on "Student" to "Stud_admin"/Grant select on "Student" to "Dekan"/Grant update on "Student" to "Dekan"/Grant delete on "Student" to "Dekan"/Grant insert on "Student" to "Dekan"/Grant references on "Student" to "Dekan"/Grant select on "Ocenki" to "Stud_admin"/Grant update on "Ocenki" to "Stud_admin"/Grant delete on "Ocenki" to "Stud_admin"/Grant insert on "Ocenki" to "Stud_admin"/Grant references on "Ocenki" to "Stud_admin"/Grant select on "Ocenki" to "Dekan"/Grant update on "Ocenki" to "Dekan"/Grant delete on "Ocenki" to "Dekan"/Grant insert on "Ocenki" to "Dekan"/Grant references on "Ocenki" to "Dekan"/Grant select on "Predmet" to "Stud_admin"/Grant update on "Predmet" to "Stud_admin"/Grant delete on "Predmet" to "Stud_admin"/Grant insert on "Predmet" to "Stud_admin"/Grant references on "Predmet" to "Stud_admin"/Grant select on "FCLT" to "Stud_admin"/Grant update on "FCLT" to "Stud_admin"/Grant delete on "FCLT" to "Stud_admin"/Grant insert on "FCLT" to "Stud_admin"/Grant references on "FCLT" to "Stud_admin"/Grant select on "SPECT" to "Stud_admin"/Grant update on "SPECT" to "Stud_admin"/Grant delete on "SPECT" to "Stud_admin"/Grant insert on "SPECT" to "Stud_admin"/Grant references on "SPECT" to "Stud_admin"//* Users permissions */

Сгенерированная Case Studio программа создания таблиц базы данных для СУБД Access

' Created 02.02.2006' Modified 03.02.2006' Project Kontingent ' Model Students ' Company AGTU ' Author Groshev ' Version 2006.1' Database Access 2000 '======================================================='=== MS Access 2000 database creation method'==='=== 1. Create a new database in the MS Access 2000'=== 2. Create a new module'=== 3. Copy the CASE Studio 2 output SQL script into the new MS Access 2000 module'=== 4. Select from main menu "Tools" item "References..." and check '=== the "Microsoft DAO 3.6 Object Library."'=== 5. Place your mouse cursor somewhere in the main procedure Main()'=== 6. Run the module code (Click the "Run Sub/UserForm" button or press F5)'=======================================================Public dbs As DAO.DatabasePublic tdf As DAO.TableDefPublic idx As DAO.IndexPublic rel As DAO.RelationSub Main()Set dbs = CurrentDb()On Error GoTo ErrorHandler Call CreateTables Call CreatePrimaryKeys Call CreateIndexes Call CreateAlterKeys Call CreateRelations Call CreateQueries MsgBox "Script successfully processed.", vbInformation Exit SubErrorHandler: Select Case Err.Number Case 3010 MsgBox "Table " & tdf.Name & " allready exist!", vbInformation Err.Clear Case 3284 MsgBox "Index " & idx.Name & " for table " & tdf.Name & " allready exist!", vbInformation Err.Clear Case Else MsgBox Err.Description, vbCritical End SelectEnd Sub' Create tables'===============Sub CreateTables()Call CreateTable1 'StudentCall CreateTable2 'OcenkiCall CreateTable3 'PredmetCall CreateTable4 'FCLTCall CreateTable5 'SPECTEnd Sub'=== Create table Student ======Sub CreateTable1()Set tdf = dbs.CreateTableDef("Student")Call AddFieldToTable("Nz", dbText, 7, 0, "", "", "", TRUE)Call AddFieldToTable("Fio", dbText, 45, 0, "", "", "", FALSE)Call AddFieldToTable("date_p", dbDate, 0, 0, "", "", "", FALSE)Call AddFieldToTable("n_fclt", dbSingle, 0, 0, "", "", "", TRUE)Call AddFieldToTable("n_spect", dbText, 9, 0, "", "", "", TRUE)Call AddFieldToTable("kurs", dbSingle, 0, 0, "", "", "", FALSE)Call AddFieldToTable("n_grup", dbText, 10, 0, "", "", "", FALSE)Call AddFieldToTable("n_pasp", dbText, 10, 0, "", "", "", FALSE)dbs.TableDefs.Append tdfEnd Sub'=== Create table Ocenki ======Sub CreateTable2()Set tdf = dbs.CreateTableDef("Ocenki")Call AddFieldToTable("semestr", dbSingle, 0, 0, "", "", "", FALSE)Call AddFieldToTable("n_predm", dbSingle, 0, 0, "", "", "", TRUE)Call AddFieldToTable("ball", dbText, 1, 0, "", "", "", FALSE)Call AddFieldToTable("data_b", dbDate, 0, 0, "", "", "", FALSE)Call AddFieldToTable("Prepod", dbText, 45, 0, "", "", "", FALSE)Call AddFieldToTable("Nz", dbText, 7, 0, "", "", "", TRUE)dbs.TableDefs.Append tdfEnd Sub'=== Create table Predmet ======Sub CreateTable3()Set tdf = dbs.CreateTableDef("Predmet")Call AddFieldToTable("n_predm", dbSingle, 0, 0, "", "", "", TRUE)Call AddFieldToTable("name_p", dbText, 120, 0, "", "", "", FALSE)dbs.TableDefs.Append tdfEnd Sub'=== Create table FCLT ======Sub CreateTable4()Set tdf = dbs.CreateTableDef("FCLT")Call AddFieldToTable("n_fclt", dbSingle, 0, 0, "", "", "", TRUE)Call AddFieldToTable("name_f", dbText, 120, 0, "", "", "", FALSE)dbs.TableDefs.Append tdfEnd Sub'=== Create table SPECT ======Sub CreateTable5()Set tdf = dbs.CreateTableDef("SPECT")Call AddFieldToTable("n_spect", dbText, 9, 0, "", "", "", TRUE)Call AddFieldToTable("name_S", dbText, 120, 0, "", "", "", FALSE)dbs.TableDefs.Append tdfEnd Sub' Create primary keys'=====================Sub CreatePrimaryKeys()'=== Create primary key for table Student ======Set tdf = dbs.TableDefs("Student")Set idx = tdf.CreateIndex("pk_Student")idx.Primary = Trueidx.Unique = Trueidx.IgnoreNulls = FalseCall AddFieldToIndex("Nz", False)tdf.Indexes.Append idx'=== Create primary key for table Predmet ======Set tdf = dbs.TableDefs("Predmet")Set idx = tdf.CreateIndex("pk_Predmet")idx.Primary = Trueidx.Unique = Trueidx.IgnoreNulls = FalseCall AddFieldToIndex("n_predm", False)tdf.Indexes.Append idx'=== Create primary key for table FCLT ======Set tdf = dbs.TableDefs("FCLT")Set idx = tdf.CreateIndex("pk_FCLT")idx.Primary = Trueidx.Unique = Trueidx.IgnoreNulls = FalseCall AddFieldToIndex("n_fclt", False)tdf.Indexes.Append idx'=== Create primary key for table SPECT ======Set tdf = dbs.TableDefs("SPECT")Set idx = tdf.CreateIndex("pk_SPECT")idx.Primary = Trueidx.Unique = Trueidx.IgnoreNulls = FalseCall AddFieldToIndex("n_spect", False)tdf.Indexes.Append idxEnd Sub' Create indexes'================Sub CreateIndexes()End Sub' Create alter keys (unique indexes in MS ACCESS)'================================================Sub CreateAlterKeys()End Sub' Create relations'==================Sub CreateRelations()'=== Create relations between parent table Student and child table Ocenki ======Set rel = dbs.CreateRelation("Student_Ocenki")rel.Table = "Student"rel.ForeignTable = "Ocenki"rel.Attributes = dbRelationUpdateCascade+dbRelationDeleteCascadeCall AddFieldToRelation("Nz", "Nz")dbs.Relations.Append rel'=== Create relations between parent table Predmet and child table Ocenki ======Set rel = dbs.CreateRelation("Predmet_Ocenki")rel.Table = "Predmet"rel.ForeignTable = "Ocenki"rel.Attributes = dbRelationUpdateCascade+dbRelationDeleteCascadeCall AddFieldToRelation("n_predm", "n_predm")dbs.Relations.Append rel'=== Create relations between parent table FCLT and child table Student ======Set rel = dbs.CreateRelation("FCLT_Student")rel.Table = "FCLT"rel.ForeignTable = "Student"rel.Attributes = dbRelationUpdateCascade+dbRelationDeleteCascadeCall AddFieldToRelation("n_fclt", "n_fclt")dbs.Relations.Append rel'=== Create relations between parent table SPECT and child table Student ======Set rel = dbs.CreateRelation("SPECT_Student")rel.Table = "SPECT"rel.ForeignTable = "Student"rel.Attributes = dbRelationUpdateCascade+dbRelationDeleteCascadeCall AddFieldToRelation("n_spect", "n_spect")dbs.Relations.Append relEnd Sub' Create queries'================Sub CreateQueries()Dim qdf As QueryDefEnd Sub' Add fields to table'=====================Sub AddFieldToTable(FieldName As String, DataType As String, SizeCol As Integer, Attributes As Long, DefaultValue As Variant, ValText As String, ValRule As String, NotN As Boolean)Dim fld As DAO.FieldSet fld = tdf.CreateField(FieldName, DataType)If SizeCol <> 0 Then fld.Size = SizeColIf Attributes <> 0 Then fld.Attributes = Attributesfld.Required = NotNfld.DefaultValue = DefaultValuefld.ValidationRule = ValRulefld.ValidationText = ValTexttdf.Fields.Append fldEnd Sub' Add properties to table'=========================Sub AddPropertyToTable(PropertyName As String, Value As Variant, DataType As String)Dim prp As DAO.PropertySet prp = tdf.CreateProperty(PropertyName, DataType, Value)tdf.Properties.Append prpEnd Sub' Add properties to field'=========================Sub AddPropertyToField(FieldName As String, PropertyName As String, Value As Variant, DataType As String)Dim prp As DAO.PropertyDim fld As DAO.FieldSet fld = tdf.Fields(FieldName)Set prp = fld.CreateProperty(PropertyName, DataType, Value)fld.Properties.Append prpEnd Sub' Add fields to index'=====================Sub AddFieldToIndex(FieldName As String, Descending As Boolean)Dim fld As DAO.FieldSet fld = idx.CreateField(FieldName)If Descending = True Then fld.Attributes = dbDescendingidx.Fields.Append fldEnd Sub' Add fields to relation'========================Sub AddFieldToRelation(PKField As String, FKField As String)Dim fld As DAO.FieldSet fld = rel.CreateField(PKField)fld.ForeignName = FKFieldrel.Fields.Append fldEnd Sub

 

 

© 2003-2005 INTUIT.ru. Все права защищены.

 

Интернет-Университет Информационных Технологий

http://www.INTUIT.ru

Основы работы с базами данных
7. Лекция: СУБД Microsoft Office Access: версия для печати и PDA Рассмотрены основные возможности и особенности СУБД Microsoft Office Access. Разобраны последовательность создания базы данных в этой системе, стандартные режимы работы с таблицами, методы разработки экранных форм, отчетов, запросов. Цель: освоение методов работы с базами данных в системе Microsoft Office Access.
Общая характеристика системы Система Microsoft Access является одним из основных компонентов Microsoft Office и предназначена для работы с реляционными базами данных. Особенность данной СУБД: вся информация базы данных хранится в одном файле (*.mdb). Кроме информации таблиц, в этом же файле сохраняются компоненты приложения для работы с базой данных - экранные формы, отчеты, запросы, программные модули. Для работы с базой данных система использует Microsoft Jet database engine - систему управления базами данных, извлекающую и сохраняющую данные в пользовательских и системных задачах. Ядро базы данных Microsoft Jet можно рассматривать как компонент диспетчера данных, с помощью которого строятся остальные системы доступа к данным, такие как Microsoft Access и Microsoft Visual Basic. Язык написания программных модулей для работы с базой данных - Microsoft Visual Basic for Applications (VBA). Основные возможности системы при работе с базами данных приведены в табл. 7.1.
Таблица 7.1. Спецификации системы Microsoft Office Access 2003
Атрибут Максимальное значение
База данных
Размер файла базы данных (*.mdb) 2 Гбайт за вычетом места, необходимого системным объектам
Число объектов в базе данных 32 768
Модули (включая формы и отчеты), свойство Наличие модуля (HasModule) которых имеет значение True) 1 000
Число знаков в имени объекта  
Число знаков в пароле  
Число знаков в имени пользователя или имени группы  
Число одновременно работающих пользователей  
Таблица
Число знаков в имени таблицы  
Число знаков в имени поля  
Число полей в таблице  
Число открытых таблиц 2048 (фактическое число может быть меньше из-за внутренних таблиц, открываемых Microsoft Access)
Размер таблицы 2 Гбайт за вычетом места, необходимого системным объектам
Число знаков в текстовом поле  
Число знаков в поле MEMO 65 535 при вводе данных через интерфейс пользователя;1 Гбайт для хранения знаков при программном вводе данных
Размер поля объекта OLE 1 Гбайт
Число индексов в таблице  
Число полей в индексе  
Число знаков в сообщении об ошибке  
Число знаков в условии на значение записи  
Число знаков в описании таблицы или поля  
Число знаков в записи (кроме полей MEMO и полей объектов OLE)  
Число знаков в значении свойства поля  
Запрос
Число установленных связей 32 на одну таблицу за вычетом числа индексов, находящихся в таблице для полей или сочетаний полей, которые не участвуют в связях
Число таблиц в запросе  
Число полей в наборе записей  
Размер набора записей 1 Гбайт
Предел сортировки 255 знаков в одном или нескольких полях
Число уровней вложения запросов  
Число знаков в ячейке на бланке запроса  
Число знаков для параметра в запросе с параметрами  
Число операторов AND в предложении WHERE или HAVING  
Число знаков в инструкции SQL приблизительно 64000
Форма и отчет
Число знаков в надписи  
Число знаков в поле  
Ширина формы или отчета 22 дюйма (55,87 см)
Высота раздела 22 дюйма (55,87 см)
Высота всех разделов плюс заголовки разделов (в режиме конструктора) 200 дюймов (508 см)
Число уровней вложения форм или отчетов  
Число полей или выражений, которые можно отсортировать или сгруппировать в отчете  
Число заголовков и примечаний в отчете 1 заголовок/примечание отчета; 1 заголовок/примечание страницы; 10 заголовков/примечаний групп
Число печатных страниц в отчете  
Число элементов управления и разделов, которые можно добавить за время существования формы или отчета  
Число знаков в инструкции SQL, работающей в качестве свойства Источник записей (RecordSource) или Источник строк (RowSource) формы, отчета или элемента управления (оба.mdb и.adp)  
Макрос
Число макрокоманд в макросе  
Число знаков в условии  
Число знаков в комментарии  
Число знаков в аргументе макрокоманды  

В табл. 7.2. приведены сведения о типах данных, которые могут иметь поля в таблицах.

Таблица 7.2. Типы данных системы
Тип даннах полей Тип данных в VBA Использование Размер
Текстовый String Текст, состоящий из любых символов в кодировке Unicode (2 байта на символ) До 255 символов
Поле МЕМО String Текст в кодировке Unicode До 64000 символов
Числовой(Байт, Целое, Длинное целое, Одинарное с плавающей точкой, Двойное с плавающей точкой, Код репликации, Действительное) Byte, Integer,Long,Single,Double Числовые данные 1, 2, 4 или 8 байтов. 16 байтов только для кодов репликации (GUID)
Дата/времяПолный формат даты. Длинный формат даты. Средний формат даты. Краткий формат даты. Длинный формат времени. Средний формат времени. Краткий формат времени Date Даты и время. 31.12.04 23:55:5931 декабря 2004 г.31-дек-0431.12.0423:55:5911:5523:55 8 байтов(при активации поля всегда показывает полный формат даты)
Денежный Currency Значения валют. Денежный тип используется для предотвращения округлений во время вычислений. Предполагает до 15 символов в целой части числа и 4 - в дробной 8 байтов
Счетчик   Автоматическая вставка последовательных (увеличивающихся на 1) или случайных чисел при добавлении записи. 4 байта. 16 байтов только для кодов репликации (GUID)
Логический Boolean Поля, содержащие только одно из двух возможных значений, таких как Да/Нет, Истина/Ложь, Вкл/Выкл. 1 бит
Поле объекта OLE String Объекты (например, документы Microsoft Word, электронные таблицы Microsoft Excel, рисунки, звуки и другие двоичные данные), созданные в программах, использующих протокол OLE. Объекты могут быть связанными или внедренными. До 1 гигабайта (ограничено объемом диска)
Гиперссылка String Поле, в котором хранятся гиперссылки. Гиперссылка может иметь вид пути UNC, либо URL-адреса До 64000 символов
Мастер подстановок   Создает поле, позволяющее выбрать значение из другой таблицы или из списка значений, используя поле со списком. При выборе данного типа запускается Мастер для определения этого поля Тот же размер, который имеет первичный ключ, являющийся полем подстановок

Система Microsoft Access имеет собственные средства для разграничения прав доступа пользователей к базе данных.

Простейшим способом ограничения доступа к базе данных является установка пароля для открытия базы данных (*.mdb). После установки пароля при каждом открытии базы данных будет появляться диалоговое окно, в которое требуется ввести пароль. Этот способ достаточно надежен (Microsoft Access шифрует пароль, поэтому к нему нет доступа при непосредственном чтении файла базы данных), но он действует только при открытии базы данных. После открытия базы все объекты становятся доступными для пользователя (пока не определены другие типы защиты, описанные ниже в этом разделе). Для базы данных, которая совместно используется небольшой группой пользователей или на автономном компьютере, обычно оказывается достаточно установки пароля.

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

Нельзя использовать установку пароля на базу данных, если предполагается выполнять репликацию базы. Реплицированные базы данных не могут быть синхронизированы, если установлен пароль базы данных.

Защита на уровне пользователей имеет большие возможности по разграничению прав. Этот способ подобен способам, используемым в большинстве сетевых систем.

При запуске Microsoft Access от пользователя требуется идентифицировать себя и ввести пароль. Microsoft Access по умолчанию создает две группы: администраторы (группа Admins) и простые пользователи (группа Users). Допускается определение других групп и пользователей.

Члены группы Admins имеют разрешения на доступ ко всем объектам базы данных. Другим группам и пользователям могут предоставляться разрешения на доступ только к отдельным объектам базы данных. Типовые разрешения на доступ для группы Users могут включать " Чтение данных " и " Обновление данных " для таблиц и запросов, а также " Открытие/запуск " для форм и отчетов.




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 4498; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.032 сек.