КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Характеристика даталогической модели БД
На основе ER-модели построим даталогическую модель (таблица 7).
Таблица 7
Даталогическая модель
Сущность
| Идентификатор таблицы
| Атрибут
| Идентификатор поля
| Тип поля
|
|
|
|
|
| Электронный ключ
| keys
| Идентификатор
| key_id
| int
| Заводской идентификатор
| factory_key_id
| nchar(15)
| Идентификатор модели (FK)
| key_model_id
| smallint
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена
| is_updated
| int
| Пользователь
| users
| Идентификатор пользователя
| user_id
| int
| Идентификатор статуса (FK)
| status_id
| tinyint
| Является юрид. лицом
| is_artificial_person
| bit
| FTP-логин
| ftp_login
| varchar(20)
| FTP-пароль
| ftp_password
| varchar(10)
| Контактная информация
| contact_inf
| text
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена
| is_updated
| int
| Юридическое лицо
| artificial_person
| Идентификатор пользователя (FK)
| user_id
| int
| Наименование организации
| name
| varchar(100)
| Таблица 7 (продолжение)
|
|
|
|
| Физическое лицо
| natural_person
| Идентификатор пользователя (FK)
| user_id
| Int
| Фамилия
| second_name
| varchar(50)
| Имя
| first_name
| varchar(25)
| Отчество
| middle_name
| varchar(25)
| Паспортные данные
| passport
| text
| Статус
| status
| Идентификатор статуса
| status_id
| Int
| Наименование
| status_name
| varchar(20)
| Для физических лиц
| is_for_natural_person
| Bit
| Для юридических лиц
| is_for_artificial_person
| bit
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена
| is_updated
| Int
| Стандартный комплект
| standard_kit
| Идентификатор комплекта
| kit_id
| smallint
| Наименование
| kit_name
| varchar(50)
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена
| is_updated
| smallint
|
Таблица 7 (продолжение)
|
|
|
|
| Приложение
| application
| Идентификатор приложения
| application_id
| tinyint
| Наименование приложения
| application_name
| varchar(50)
| Актуальность
| is_actual
| bit
| Порядковый номер
| application_number
| tinyint
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена
| is_updated
| tinyint
| Счет для прихода
| bill
| Идентификатор счета
| bill_id
| int
| Номер счета (AK)
| bill_number
| int
| Дата предоставления (AK)
| bill_date
| date
| Идентификатор пользователя (FK)
| user_id
| int
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена (AK)
| is_updated
| int
| Приход ключа
| key_receipt
| Идентификатор прихода
| key_receipt_id
| int
| Заводской идентификатор (AK, FK)
| factory_key_id
| nchar(15)
| Идентификатор счета (FK)
| bill_id
| int
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена (AK)
| is_updated
| int
|
Таблица 7 (продолжение)
|
|
|
|
| Модель ключа
| key_model
| Идентификатор модели
| model_id
| smallint
| Название ключа
| model_name
| varchar(50)
| Идентификатор типа ключа (FK)
| key_type_id
| tinyint
| Максимальное количество сетевых лицензий
| max_net_count
| tinyint
| Актуальность
| is_actual
| bit
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена
| is_updated
| smallint
| key_type
| Идентификатор типа ключа
| key_type_id
| tinyint
| Наименование
| key_type_name
| varchar(25)
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена
| is_updated
| tinyint
|
Таблица 7 (продолжение)
|
|
|
|
| Договор о технической поддержке
| support_contract
| Идентификатор договора ТП
| support_contract_id
| int
| Номер договора ТП (AK)
| support_contract_number
| int
| Дата заключения (AK)
| support_contract_date
| date
| Срок предоставления, мес
| support_contract_period
| tinyint
| Пользователь (FK)
| user_id
| int
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена (AK)
| is_updated
| int
| Версия приложения
| build
| Идентификатор версии
| build_id
| smallint
| Сборка
| build_name
| varchar(7)
| Дата сборки
| build_date
| date
| Идентификатор приложения (FK)
| application_id
| tinyint
| Комментарий
| build_text
| text
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена
| is_updated
| smallint
|
Таблица 7 (продолжение)
|
|
|
|
| Использование версий
| build_using
| Идентификатор
| build_using_id
| int
| Идентификатор версии (AK FK)
| build_id
| smallint
| Идентификатор пользователя (AK FK)
| user_id
| int
| Дата получения
| build_using_date
| date
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена (AK)
| is_updated
| int
| Прошивка
| firmware_download
| Идентификатор прошивки
| firmware_download_id
| int
| Дата прошивки (AK)
| fd_date
| date
| Заводской идентификатор (AK, FK)
| factory_key_id
| nchar(15)
| Номер программы
| prog_number
| word
| Счетчик GP
| counter_gp
| word
| Маска ключа
| key_mask
| binary
| Серийный номер
| serial_number
| word
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена (AK)
| is_updated
| int
|
Таблица 7 (продолжение)
|
|
|
|
| Приложения прошивки
| fd_application
| Идентификатор
| fd_application_id
| int
| Идентификатор прошивки (AK, FK)
| firmware_download_id
| int
| Идентификатор приложения (AK, FK)
| application_id
| tinyint
| Наличие локальной лицензии
| is_local
| bit
| Количество сетевых лицензий
| net_count
| tinyint
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена (AK)
| is_updated
| int
| Состав комплекта
| composition_of_kit
| Идентификатор
| composition_od_kit_id
| smallint
| Идентификатор приложения (AK FK)
| application_id
| tinyint
| Идентификатор комплекта (AK FK)
| kit_id
| smallint
| Описание
| description
| text
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена
| is_updated
| smallint
|
Таблица 7 (окончание)
|
|
|
|
| Лицензия
| licence
| Идентификатор
| licence_id
| int
| Идентификатор пользователя (AK FK)
| user_id
| int
| Заводской идентификатор (AK FK)
| factory_key_id
| nchar(15)
| Дата выдачи
| licence_date
| date
| Запись помечена на удаление
| is_deleted
| bit
| Запись была обновлена
| is_updated
| int
|
Для всех сущностей, имеющих составные ключи, в соответствующих таблицах создано поле «Идентификатор», при этом были указаны все возможные альтернативные ключи (AK). Это было сделано с целью минимизации объема базы данных. Первичные ключи таблиц выделены жирным шрифтом. Внешние ключи имеют метку «FK».
Для сущности «Пользователь» атрибут «тип» был заменен на «Является юрид. лицом» логического типа. Если значение равно «истина», то пользователь – юридическое лицо, иначе – физическое лицо. Атрибут логического типа будет занимать гораздо меньше памяти ЭВМ, чем хранение строкового. При этом вероятность появления нового типа пользователя крайне мала.
Для сущности «Модель ключа» было создано две таблицы. В главной таблице «key_model» вместо атрибута «тип ключа» имеется «идентификатор типа ключа». Подчиненная таблица представляет собой список возможных типов ключей. Такое преобразование сущности позволит более рационально использовать место на диске, так и обеспечит контроль целостности данных.
Для большинства таблиц добавлены два служебных поля «Запись помечена на удаление» логического типа и «Запись была обновлена», тип данных которого совпадает с типом ключевого поля таблицы.
Во избежание случайного удаления или изменения записи были введены эти поля. Пользователь из клиентской программы может только пометить на запись на удаление. При этим запись будет удалена лишь «визуально», при этом фактически она будет хранится в своей таблице с пометкой, что была удалена пользователем.
При редактировании (обновлении) записи старая запись остается при этом в поле «Запись была обновлена» добавляется ссылка на новую запись, которую пользователь ввел при редактировании. Старые, уже обновленные, записи конечному пользователю также не выводятся.
|