Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Работа с глобалами через объекты и SQL

Содержание

СодержаниеCacheStorageОбзор стратегий храненияCacheSQLStorageCustomStorageПример CacheSQLStorage
Работа с существующими глобалами через объекты и SQLВадим ФедоровInterSystems Corporation СодержаниеCacheStorageОбзор стратегий храненияCacheSQLStorageCustomStorageПример CacheSQLStorage Сравнение стратегий хранений	Обеспечивается Caché	Реализуется разработчиком CacheStorage идеально подходит для новых приложений CacheSQLStorage применяется, когда с существующими СодержаниеCacheStorageОбзор стратегий храненияCacheSQLStorageCustomStorageПример CacheSQLStorage Обзор CacheStorageОбъектное APIПриложение%LoadData%SaveData%DeleteDataObjectScriptObjectScriptObjectScriptОбъектная реализацияГлобалы CacheStorage генерирует глобалы, в которых используется $ListBuildУникальный идентификатор (IDKey / PrimaryKey) СодержаниеCacheStorageОбзор стратегий храненияCacheSQLStorageCustomStorageПример CacheSQLStorage Обзор CacheSQLStorageОбъектное APIПриложение%LoadData%SaveData%DeleteDataSELECTINSERT / UPDATEDELETESQL РеализацияГлобалы Создайте Persistent-класс Добавьте свойства в класс Определите свойство (свойства), которое будет При работе через объекты будут вызываться триггеры (при использовании CacheStorage они не CacheSQLStorage обычно создается:ПрограммистомПрограммой конвертации из F-DBMSПрограммой конвертации из KB-SQLСоздание CacheSQLStorage Не ко всем структурам глобалов можно настроить CacheSQLStorage так чтобы обеспечить Различают следующие виды CacheSQLStorage карт: Данные (MasterMap): Должны быть определены все поля IDKey индексы определяют уникальные идентификаторы для объектов Primary Key индексы определяют Индексы (subscripts) карт обычно эквивалентны индексам глобалов Индексы карт используется для формирования Существует тесная связь между IDKey и RowID для карт данных, но Когда определены индексы глобала, нужно определить хранение свойств класса в глобале Map Name: Имя карты. Map Type: Данные или Индексы (Data or Access Type: Тип доступа. Sub, Piece, Global или Other Delimiter: Разделитель. RowID: Позиция поля в спецификации RowID Field: Имя поля, состовляющего часть Field: Имя поля Node: Дополнительный индекс глобала (только литерал), где находится СодержаниеCacheStorageОбзор стратегий храненияCacheSQLStorageCustomStorageПример CacheSQLStorage Обзор CustomStorageОбъектные APIПрилжение%LoadData%SaveData%DeleteData???Собственная реализацияГлобалы Создайте Persistent-класс Добавьте свойства в класс Определите свойство (свойства), которое будет Для того чтобы использовать SQL с CustomStorage, необходимо определить специальный параметр Для того чтобы использовать объекты с CustomStorage, необходимо выполнить следующее: Реализовать Код, реализованный в %LoadData(), будет выполняться каждый раз, когда загружается объект, Код, реализованный в %SaveData(), будет выполняться каждый раз, когда сохраняется объект, Код, реализованный в %DeleteData, будет выполняться каждый раз, когда объект будет СодержаниеCacheStorageОбзор стратегий храненияCacheSQLStorageCustomStorageПример CacheSQLStorage Phone NumbersDoctor VisitsПример модели данных Есть два отношения Parent-Children: Пациент может иметь ^P(SSN) = “Name^DOB^Phone1~Phone2~...~PhoneN^Company”^P(SSN,“Address”) = “City^PostalCode^Country”^P(SSN,“Visits”,VisitDate,VisitTime) = “Symptom^Payment”Пример структуры данных глобала^P(“211-22-1222”) = “Smith,John^39873^718-317-3312~917-225-2213^AT&T”^P(“211-22-1222”,“Address”) ^PI(Name,SSN) = “”Пример структуры индексов глобала^PI(“Smith,John”,“211-22-1222”) = “” Создаем Persistent-класс Добавляем свойства Выбираем уникальный идентификатор Базируется на одном поле: SSN Определяем ID / Primary Key индекс Основан на свойстве SSN Не изменяйте collation индекса Создаем Storage Создаем карту данных Имя карты не может содержать символ «пробел» Определяем индексы глобала Первый уровень индекса глобала - SSN Определяем Row ID Первый Row ID 1 основан на SSN, которое хранится Определяем свойства Введите разделитель и дополнительную информацию Срздаем карту индексов Выберите тип заполнения ‘full’ Определяем индексы глобала индексов Определяем Row ID индекса Первый Row ID основан на SSN, который хранится Сохраняем и компилируем класс Создаем дочернюю таблицу PhoneListЭтот класс тоже Persistent Создаем отношение Parent-Child Отношения (Relationship) – специальный класс свойств Кроме определения свойства Добавляем остальные свойства Кроме свойства, Вы должны определить свойство для представления позиции во встроенной разделенной (Counter) Выбираем уникальный идентификатор Наш идентификатор будет строится на поле Counter Определяем индекс ID / Primary Key Задайте индекс по свойству Counter Не Создаем Storage Создаем карту данных Имя карты не может содержать символ «пробел» Определяем индексы глобала Первый уровень индекса глобала основан на Training.Patient.SSN Второй уровень Определяем Row ID Row ID 1 основан на Training.Patient.SSN, которое хранится на Определяем свойства Внесите только свойство HomePhone Сохраняем и компилируем класс Создаем дочернюю таблицу Visit Этот класс тоже Persistent Создаем отношение Parent-Child Кроме определения свойства в этом классе (PatientRef), Вы должны Добавляем остальные свойства Выбираем уникальный идентификаторВ этот раз идентификатор будет строиться по 2 полям: VisitDate и VisitTime Определяем индекс ID / Primary Key Постройте индекс по свойствам VisitDate и Создаем Storage Создаем карту данных Имя карты не может содержать символ «пробел» Определяем индексы глобала Первый уровень индекса глобала основан на Training.Patient.SSN Второй уровень Определяем Row ID Row ID 1 основан на свойстве Training.Patient.SSN, которое хранится Определяем свойства Сохраняем и компилируем класс Работа с существующими глобалами через объекты и SQLВадим ФедоровInterSystems Corporation
Слайды презентации

Слайд 2 Содержание
CacheStorage
Обзор стратегий хранения
CacheSQLStorage
CustomStorage
Пример CacheSQLStorage

СодержаниеCacheStorageОбзор стратегий храненияCacheSQLStorageCustomStorageПример CacheSQLStorage

Слайд 3 Сравнение стратегий хранений
 Обеспечивается Caché
 Реализуется разработчиком

Сравнение стратегий хранений	Обеспечивается Caché	Реализуется разработчиком

Слайд 4 CacheStorage идеально подходит для новых приложений
CacheSQLStorage

CacheStorage идеально подходит для новых приложений CacheSQLStorage применяется, когда с

применяется, когда с существующими глобалами можно и нужно работать

с помощью SQL
CustomStorage используется тогда, когда нельзя работать с глобалами через SQL и нужно реализовывать собственную сложную логику для обеспечения объектного доступа

Выбираем стратегию хранения


Слайд 5 Содержание
CacheStorage
Обзор стратегий хранения
CacheSQLStorage
CustomStorage
Пример CacheSQLStorage

СодержаниеCacheStorageОбзор стратегий храненияCacheSQLStorageCustomStorageПример CacheSQLStorage

Слайд 6 Обзор CacheStorage
Объектное API
Приложение
%LoadData
%SaveData
%DeleteData
ObjectScript
ObjectScript
ObjectScript
Объектная реализация
Глобалы

Обзор CacheStorageОбъектное APIПриложение%LoadData%SaveData%DeleteDataObjectScriptObjectScriptObjectScriptОбъектная реализацияГлобалы

Слайд 7 CacheStorage генерирует глобалы, в которых используется $ListBuild
Уникальный

CacheStorage генерирует глобалы, в которых используется $ListBuildУникальный идентификатор (IDKey /

идентификатор (IDKey / PrimaryKey) может автоматически сгенерирован Cache или

задан разработчиком вручную
Это влияет на структуру глобалов
Можно управлять хранением свойств классов в глобалах
Это влияет на структуру значений глобалов

Информация о CacheStorage


Слайд 8 Содержание
CacheStorage
Обзор стратегий хранения
CacheSQLStorage
CustomStorage
Пример CacheSQLStorage

СодержаниеCacheStorageОбзор стратегий храненияCacheSQLStorageCustomStorageПример CacheSQLStorage

Слайд 9 Обзор CacheSQLStorage
Объектное API
Приложение
%LoadData
%SaveData
%DeleteData
SELECT
INSERT / UPDATE
DELETE
SQL Реализация
Глобалы

Обзор CacheSQLStorageОбъектное APIПриложение%LoadData%SaveData%DeleteDataSELECTINSERT / UPDATEDELETESQL РеализацияГлобалы

Слайд 10 Создайте Persistent-класс
Добавьте свойства в класс
Определите

Создайте Persistent-класс Добавьте свойства в класс Определите свойство (свойства), которое

свойство (свойства), которое будет идентификатором класса (IDKey / Primary

Key)
Создайте стратегию хранения выставив соответствие между свойствами класса и данными глобала

Обзор CacheSQLStorage


Слайд 11 При работе через объекты будут вызываться триггеры (при

При работе через объекты будут вызываться триггеры (при использовании CacheStorage они

использовании CacheStorage они не вызываются)!
Поддерживается ссылка и Parent-Child отношение

для связи классов

Особенности CacheSQLStorage


Слайд 12 CacheSQLStorage обычно создается:
Программистом
Программой конвертации из F-DBMS
Программой конвертации

CacheSQLStorage обычно создается:ПрограммистомПрограммой конвертации из F-DBMSПрограммой конвертации из KB-SQLСоздание CacheSQLStorage

из KB-SQL
Создание CacheSQLStorage


Слайд 13 Не ко всем структурам глобалов можно настроить

Не ко всем структурам глобалов можно настроить CacheSQLStorage так чтобы

CacheSQLStorage так чтобы обеспечить полный SQL-доступ (Read/Write/Delete)
Некоторые структуры подходят

только для чтения через SQL (SELECT)
Чтобы обеспечитьобновление иногда необходима дополнительная работа, кроме установки Mapping

Обеспечение SQL-доступа


Слайд 14 Различают следующие виды CacheSQLStorage карт:
Данные (MasterMap): Должны

Различают следующие виды CacheSQLStorage карт: Данные (MasterMap): Должны быть определены все

быть определены все поля
Индексы: Должны быть определены некоторые

поля
Full (по умолчанию): Все данные попадают в индексы
Conditional: Данные попадают в индексы, если выполняется
Nonnull: Нулевые значения (Null values) не попадают в индексы

Виды карт


Слайд 15 IDKey индексы определяют уникальные идентификаторы для объектов

IDKey индексы определяют уникальные идентификаторы для объектов Primary Key индексы

Primary Key индексы определяют уникальные идентификаторы для SQL
IDKey

и Primary Key индексы обычно строятся по одним и тем же полям

ID и Primary Key


Слайд 16 Индексы (subscripts) карт обычно эквивалентны индексам глобалов
Индексы

Индексы (subscripts) карт обычно эквивалентны индексам глобалов Индексы карт используется для

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

Поддерживаются следующие типы индексов (subscripts) :
Sub: Основанный на «стандартном» индексе глобалов
Piece: Основанный на определенной позиции (используется разделитель)
Global: Основанный на данных, хранящихся в нескольких глобалах
Other: Основанный на пользовательском коде

Индексы глобалов (Subscripts)


Слайд 17 Существует тесная связь между IDKey и RowID

Существует тесная связь между IDKey и RowID для карт данных,

для карт данных, но не для карт индексов

A RowID используется для уникальной идентификации данных в глобале, на основе индекса глобала, определенного в карте
Например, для глобала:
^Person(PersonID,“Cars”,CarID)=“Make^Model^Year”
2 поля будут нашими RowID:
PersonID: хранится на первом уровне {L1}
CarID: хранится на третьем уровне {L3}

RowID


Слайд 18 Когда определены индексы глобала, нужно определить хранение

Когда определены индексы глобала, нужно определить хранение свойств класса в

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

глобала (только литералы)
Можно использовать $Piece или $ListBuild

Карты данных


Слайд 19 Map Name: Имя карты.
Map Type: Данные

Map Name: Имя карты. Map Type: Данные или Индексы (Data

или Индексы (Data or Index)
Global Name: Имя глобала

(^…) или локального массива
Node Structure: Структура узла: $Piece или $List
Population Type: Тип заполнения
Population %: Оценка предполагаемого количества рядов в индексе
Condition: Выражение определяющее условие. Например, {Name}‘=“”
Conditional Fields: Поля, по которым будет проверяться условие
Conditional with hostvars: Булева значение, которое влияет на использование индекса кэшированными запросами
Row Reference: Позволяет программистам переопределить сгенерированный RowID

Подробности редактирования карт


Слайд 20 Access Type: Тип доступа. Sub, Piece, Global

Access Type: Тип доступа. Sub, Piece, Global или Other Delimiter:

или Other
Delimiter: Разделитель. Используется, если тип доступа Piece

Expression: Выражение. Обычно {поле}, “string” или число, или определенная позиция
Loop Init Value: Не включаемое значение, используемое для генерации кода обхода
Start Value: Включаемое значение, используемое в сгенерированном коде обхода
Stop Value: Значение, при котором обход останавливается
Stop Expression: Выражение, при котором обход останавливается, например, {L1}>200
Data Access: Доступ к данным. Переопределяет контекст текущего выражения для вычисления значения текущего уровня доступа (Override the context of the current access-level’s value expression)
Next Code: Используется программистом для переопределения генерируемого кода обхода
Invalid Conditions: Выражения, используемые для исключения рядов из карты. Например, {L1}<1
Access Variables: Переменные, используемые программистом, для обеспечения обеспечения уникальности имен

Подробности редактирования индексов глобалов


Слайд 21 RowID: Позиция поля в спецификации RowID

RowID: Позиция поля в спецификации RowID Field: Имя поля, состовляющего

Field: Имя поля, состовляющего часть RowID
Expression: Уровень внутри

определения индексов глобала (subscript definition). Например, {L2} или {L6}

Подробности редактирования RowID


Слайд 22 Field: Имя поля
Node: Дополнительный индекс глобала

Field: Имя поля Node: Дополнительный индекс глобала (только литерал), где

(только литерал), где находится поле
Piece: Позиция в строке

$Piece
Delimiter: Разделитель. Например, “^” или $c(1)

Подробности редактирования данных


Слайд 23 Содержание
CacheStorage
Обзор стратегий хранения
CacheSQLStorage
CustomStorage
Пример CacheSQLStorage

СодержаниеCacheStorageОбзор стратегий храненияCacheSQLStorageCustomStorageПример CacheSQLStorage

Слайд 24 Обзор CustomStorage
Объектные API
Прилжение
%LoadData
%SaveData
%DeleteData
?
?
?
Собственная реализация
Глобалы

Обзор CustomStorageОбъектные APIПрилжение%LoadData%SaveData%DeleteData???Собственная реализацияГлобалы

Слайд 25 Создайте Persistent-класс
Добавьте свойства в класс
Определите

Создайте Persistent-класс Добавьте свойства в класс Определите свойство (свойства), которое

свойство (свойства), которое будет идентификатором класса (IDKey / Primary

Key)
Создайте стратегию хранения выставив соответствие между свойствами класса и данными глобала
Реализуйте код доступа к объектам: %LoadData, %SaveData, %DeleteData

Обзор CustomStorage


Слайд 26 Для того чтобы использовать SQL с CustomStorage,

Для того чтобы использовать SQL с CustomStorage, необходимо определить специальный

необходимо определить специальный параметр класса:
Parameter SQLENABLED = 1;

Mapping the SQL portion with CustomStorage is identical to the methods used for CacheSQLStorage

CustomStorage и SQL


Слайд 27 Для того чтобы использовать объекты с CustomStorage,

Для того чтобы использовать объекты с CustomStorage, необходимо выполнить следующее:

необходимо выполнить следующее:
Реализовать %LoadData, %SaveData, %DeleteData
В Вашем

коде Вы должны управлять :
ID объектов на диске и в памяти (с помощью метода %IdSet())
Переменными экземпляров свойств (имена свойств имеют первые символы “i%” )
Concurrency
Уникальностью данных
Ограничениями, накладываемыми внешних ключей (Foreign key constraints)

CustomStorage и объекты


Слайд 28 Код, реализованный в %LoadData(), будет выполняться каждый

Код, реализованный в %LoadData(), будет выполняться каждый раз, когда загружается

раз, когда загружается объект, обычно после вызова %Open() и

%OpenId()
Пример %LoadData:
Method %LoadData(id As %Library.String) As %Library.Status
{
Set i%SSN = id
Set i%Name = $Piece(^P(id),“^”,1)
Set i%DOB = $Piece(^P(id),“^”,2)

Quit $$$OK
}

%LoadData


Слайд 29 Код, реализованный в %SaveData(), будет выполняться каждый

Код, реализованный в %SaveData(), будет выполняться каждый раз, когда сохраняется

раз, когда сохраняется объект, в результате вызова метода %Save()

Пример %SaveData:
Method %SaveData(id As %Library.String) As %Library.Status
{
Lock ^P(id):5 If '$Test Quit $$$ERROR($$$LockFailedToAcquireExclusive)

Set id = i%SSN
Do ..%IdSet(id)

Set $Piece(^P(id),”^”,1) = i%Name
Set $Piece(^P(id),”^”,2) = i%DOB

Quit $$$OK
}

%SaveData


Слайд 30 Код, реализованный в %DeleteData, будет выполняться каждый

Код, реализованный в %DeleteData, будет выполняться каждый раз, когда объект

раз, когда объект будет удаляться, в результате вызова %Delete()

или %DeleteId()
Пример %DeleteData:
Method %DeleteData(id As %String, concurrency as %Integer) As %Status
{
Lock ^P(id):5 If '$Test Quit $$$ERROR($$$LockFailedToAcquireExclusive)

Kill ^P(id)

Quit $$$OK
}

%DeleteData


Слайд 31 Содержание
CacheStorage
Обзор стратегий хранения
CacheSQLStorage
CustomStorage
Пример CacheSQLStorage

СодержаниеCacheStorageОбзор стратегий храненияCacheSQLStorageCustomStorageПример CacheSQLStorage

Слайд 32 Phone Numbers
Doctor Visits
Пример модели данных
Есть два отношения

Phone NumbersDoctor VisitsПример модели данных Есть два отношения Parent-Children: Пациент может

Parent-Children:
Пациент может иметь несколько номеров телефона
Пациент может

посещать доктора несколько раз
Удаление пациента удаляет его номера телефонов и визиты к врачу

Address

Patient


Слайд 33 ^P(SSN) = “Name^DOB^Phone1~Phone2~...~PhoneN^Company”
^P(SSN,“Address”) = “City^PostalCode^Country”
^P(SSN,“Visits”,VisitDate,VisitTime) = “Symptom^Payment”
Пример структуры

^P(SSN) = “Name^DOB^Phone1~Phone2~...~PhoneN^Company”^P(SSN,“Address”) = “City^PostalCode^Country”^P(SSN,“Visits”,VisitDate,VisitTime) = “Symptom^Payment”Пример структуры данных глобала^P(“211-22-1222”) =

данных глобала
^P(“211-22-1222”) = “Smith,John^39873^718-317-3312~917-225-2213^AT&T”
^P(“211-22-1222”,“Address”) = “New York^10312^USA”
^P(“211-22-1222”,“Visits”,58809,43200) = “Cough^15.00”
^P(“211-22-1222”,“Visits”,58820,57900)

= “Sore Throat^50.00”

Слайд 34 ^PI(Name,SSN) = “”
Пример структуры индексов глобала
^PI(“Smith,John”,“211-22-1222”) = “”

^PI(Name,SSN) = “”Пример структуры индексов глобала^PI(“Smith,John”,“211-22-1222”) = “”

Слайд 35 Создаем Persistent-класс

Создаем Persistent-класс

Слайд 36 Добавляем свойства

Добавляем свойства

Слайд 37 Выбираем уникальный идентификатор
Базируется на одном поле: SSN

Выбираем уникальный идентификатор Базируется на одном поле: SSN

Слайд 38 Определяем ID / Primary Key индекс
Основан на

Определяем ID / Primary Key индекс Основан на свойстве SSN Не изменяйте collation индекса

свойстве SSN
Не изменяйте collation индекса


Слайд 39 Создаем Storage

Создаем Storage

Слайд 40 Создаем карту данных
Имя карты не может содержать

Создаем карту данных Имя карты не может содержать символ «пробел»

символ «пробел»


Слайд 41 Определяем индексы глобала
Первый уровень индекса глобала -

Определяем индексы глобала Первый уровень индекса глобала - SSN

Слайд 42 Определяем Row ID
Первый Row ID 1 основан

Определяем Row ID Первый Row ID 1 основан на SSN, которое

на SSN, которое хранится в первом уровне индекса глобала


Слайд 43 Определяем свойства
Введите разделитель и дополнительную информацию

Определяем свойства Введите разделитель и дополнительную информацию

Слайд 44 Срздаем карту индексов
Выберите тип заполнения ‘full’

Срздаем карту индексов Выберите тип заполнения ‘full’

Слайд 45 Определяем индексы глобала индексов

Определяем индексы глобала индексов

Слайд 46 Определяем Row ID индекса
Первый Row ID основан

Определяем Row ID индекса Первый Row ID основан на SSN, который

на SSN, который хранится в уровне 2 индекса глобала


Слайд 47 Сохраняем и компилируем класс

Сохраняем и компилируем класс

Слайд 48 Создаем дочернюю таблицу PhoneList
Этот класс тоже Persistent

Создаем дочернюю таблицу PhoneListЭтот класс тоже Persistent

Слайд 49 Создаем отношение Parent-Child
Отношения (Relationship) – специальный класс

Создаем отношение Parent-Child Отношения (Relationship) – специальный класс свойств Кроме определения

свойств
Кроме определения свойства в этом классе (PatientRef), Вы

должны определить другую сторону отношения (PhoneNumbers)

Слайд 50 Добавляем остальные свойства
Кроме свойства, Вы должны определить

Добавляем остальные свойства Кроме свойства, Вы должны определить свойство для представления позиции во встроенной разделенной (Counter)

свойство для представления позиции во встроенной разделенной (Counter)


Слайд 51 Выбираем уникальный идентификатор
Наш идентификатор будет строится на

Выбираем уникальный идентификатор Наш идентификатор будет строится на поле Counter

поле Counter


Слайд 52 Определяем индекс ID / Primary Key
Задайте индекс

Определяем индекс ID / Primary Key Задайте индекс по свойству Counter

по свойству Counter
Не модифицируйте collation
Свойство PatientRef неявно

часть IDKey / Primary Key

Слайд 53 Создаем Storage

Создаем Storage

Слайд 54 Создаем карту данных
Имя карты не может содержать

Создаем карту данных Имя карты не может содержать символ «пробел»

символ «пробел»


Слайд 55 Определяем индексы глобала
Первый уровень индекса глобала основан

Определяем индексы глобала Первый уровень индекса глобала основан на Training.Patient.SSN Второй

на Training.Patient.SSN
Второй уровень индекса глобала основан на “^”

разделителе, используя третью позицию
Третий уровень индекса глобала основан на “~” разделителе, используя свойство Counter для позиции

Слайд 56 Определяем Row ID
Row ID 1 основан на

Определяем Row ID Row ID 1 основан на Training.Patient.SSN, которое хранится

Training.Patient.SSN, которое хранится на первом уровне индекса глобала
Row

ID 2 основан на Counter, которое хранится на первом уровне индекса глобала

Слайд 57 Определяем свойства
Внесите только свойство HomePhone

Определяем свойства Внесите только свойство HomePhone

Слайд 58 Сохраняем и компилируем класс

Сохраняем и компилируем класс

Слайд 59 Создаем дочернюю таблицу Visit
Этот класс тоже Persistent

Создаем дочернюю таблицу Visit Этот класс тоже Persistent

Слайд 60 Создаем отношение Parent-Child
Кроме определения свойства в этом

Создаем отношение Parent-Child Кроме определения свойства в этом классе (PatientRef), Вы

классе (PatientRef), Вы должны определить другую сторону отношения (Visits)


Слайд 61 Добавляем остальные свойства

Добавляем остальные свойства

Слайд 62 Выбираем уникальный идентификатор
В этот раз идентификатор будет строиться

Выбираем уникальный идентификаторВ этот раз идентификатор будет строиться по 2 полям: VisitDate и VisitTime

по 2 полям: VisitDate и VisitTime


Слайд 63 Определяем индекс ID / Primary Key
Постройте индекс

Определяем индекс ID / Primary Key Постройте индекс по свойствам VisitDate

по свойствам VisitDate и VisitTime
Не изменяйте collation
Свойство

PatientRef неявно часть IDKey / Primary Key

Слайд 64 Создаем Storage

Создаем Storage

Слайд 65 Создаем карту данных
Имя карты не может содержать

Создаем карту данных Имя карты не может содержать символ «пробел»

символ «пробел»


Слайд 66 Определяем индексы глобала
Первый уровень индекса глобала основан

Определяем индексы глобала Первый уровень индекса глобала основан на Training.Patient.SSN Второй

на Training.Patient.SSN
Второй уровень индекса глобала основан на литерале

“Visits”
Третий уровень индекса глобала основан на VisitDate
Четвертый уровень индекса глобала основан на VisitTime

Слайд 67 Определяем Row ID
Row ID 1 основан на

Определяем Row ID Row ID 1 основан на свойстве Training.Patient.SSN, которое

свойстве Training.Patient.SSN, которое хранится на первом уровне индекса глобала

Row ID 2 основан на свойстве VisitDate, которое хранится на третьем уровне индекса глобала
Row ID основан на свойстве VisitTime, которое хранится на четвертом уровне индекса глобала


Слайд 68 Определяем свойства

Определяем свойства

Слайд 69 Сохраняем и компилируем класс

Сохраняем и компилируем класс

  • Имя файла: rabota-s-globalami-cherez-obekty-i-sql.pptx
  • Количество просмотров: 122
  • Количество скачиваний: 0