Fact Data Model. General Considerations and Use Cases.
Модель данных «Факты». Основные Соображения и варианты использования.
5/22/2016
1. Any historic event is described as Fact object with basic name and full description. Любой исторический факт описывается как объект типа “Факт”, имеющий короткое Название и полное Описание.
2. Basic Fact contains only the following Fields: Простейший Факт состоит только изследующих полей:
• ID - Local ID, Auto-generated Integer Number, Primary Key. Локальный УН, Автоматически генерируемое простое число. Главный ключ записи.
• Name - reference on Phrase record with language translations of Fact Name. Ссылка на запись с языковыми переводами Названия Факта.
• Title - reference on Phrase record with language translations of Fact Title. Ссылка на запись с языковыми переводами Титула Факта.
• Description - reference on Phrase record with language translations of Fact Description. Ссылка на запись с языковыми переводами Описания Факта.
• Uid - auto-generated Globally Unique Identifier, Candidate Key. Автоматически генерируемый глобально УН. Запасной ключ записи.
• CreatorID - reference on User (another Fact) created this Fact record. Ссылка на пользователя (другой факт) создавшего эту запись.
• CreateDate - auto-generated date/time of record creation. Автоматически генерируемые время создания записи.
• ModifyDate - date/time of record last update. Время последнего изменения.
• DeleteDate - date/time of record soft delete. Время пометки на удаление.3. While working on Historic Fact, in order to add information to it, user-author would assign one or several Attributes, possibly with values. Author would pick from the existing Attributes or create new Attribute on the fly. Usually user should go over the Fact description and “tokenize” it, so to speak. That means that every meaningful piece of information should be presented as Attribute, possibly with its value of specific data type. Работая с историческим фактом, чтобы добавить туда информацию, пользователь-автор должен добавить один или несколько из уже существующих Атрибутов, или создать «на-лету» новый. Обычно пользователь просматривает описание Факта и выделяет там ключевые слова. Это значит, что любое значащее слово или фраза должна будет представлена соответствующим Атрибутом, возможно имеющим определённое значение определённого типа данных.
4. Every Attribute also has the exactly same fields, as Fact. In addition, custom Attribute will be “derived” from one or several other custom or Basic Attributes. У каждого Атрибута также есть точно такие же поля, как и у Факта. В дополнение к этому, пользовательские Атрибуты будут «произведены» от одного или нескольких других Атрибутов.
5. The Basic Attribute Types (Value Types) will be available from the start and govern the use of existing Fact Attribute properties or Fact data model feature: Базовые Атрибуты (Типы Значений) будут опредены с самого начала. Они определяют использование существующих полей для Атрибутов-Фактов:
· Boolean - yes/no. The mere existence of the Fact Attribute. Да/Нет. Само существование записи Факта-Атрибута.
· Century: Integer. Век: Простое Число.
· Currency - Currency type and value. Валюта.
· DayOfWeek: IntegerOption. День Недели: Числовой выбор.
· File - uploaded file. Загруженный файл.
· GeoPoint - latitude and longitude. Гео Точка - широта и долгота.
· Integer - simple number. Простое Число.
· MonthNumber: IntegerOption. Номер месяца: Числовой выбор.
· Season: Phrase. Время Года: Фраза.
· FactSet - group of ordered facts. Факт-Группа - отсортированная группа Фактов.
· Real - math number. Реальное число - математическое число.
· Phrase : Text - textual information on one or several languages. Фраза: Текст - Текстовая информация на одном или нескольких языках.
· Text - textual information. Текст - Текстовая информация.
· Time - date/time value. Время - точное время.
· TimeAge: Phrase. Эпоха: Фраза.
· Uid - auto-generated Globally Unique Identifier assigned to a Fact. ГУН - Автоматически генерируемый глобально уникальный номер.
· Year: Integer. Год: Простое Число.
6. Some possible system Attributes:
· Audio: File. Звук: Файл.
· Image: File. Изображение: Файл.
· IntegerOption: Integer - Choice of integers, including ranges. Числовой выбор: Простое Число - Выбор чисел, включая диапазоны.
· Language: Phrase. Язык: Фраза.
· Option: Phrase. Выбор: Фраза.
· User: Phrase. Пользователь: Фраза.
- Admin: User. Админ: Пользователь.
- Creator: User. Создатель: Пользователь.
- Editor: User. Редактор: Пользователь.
- Friend: User. Друг: Пользователь.
- Guest: User. Гость: Пользователь.
- Moderator: User. Модератор: Пользователь.
· Url: Text. Url: Текст.
· Video: File. Видео: Файл.
7. Custom Attributes must be derived from one or several already existing Attributes or Fields. Пользовательский Атрибут должен «произведен» из одного из системных Атрибутов.
8. When Custom Attribute is created, it will be derived from, at least, one other Attribute or Field. For each derivation, the corresponding Attribute Path is generated. Attribute Path is a sequence of all Attribute IDs starting from one of the Basic Attribute IDs, and continue through the all Attribute IDs in the derivation path, where the last one is a new Custom Attribute ID. Когда пользовательский атрибут создаётся, он будет произведен, по крайней мере, из одного атрибута или поля. Для каждого «наследования» будет создан новый «Путь». Путь состоит из последовательности УН всех участвующих Атрибутов, начинающаяся с одного из системных атрибутов или полей, и продолжающаясят через все УН атрибутов до последнего УН нового пользовательского Атрибута.
9. If user decides to modify Attribute derivation, all affected Attribute Paths in the system will be updated. Если пользователь изменит что-то в наследственности Атрибута, то все задетые Пути будут изменены соответственно.
10. It is paramount to ensure proper role-based security for operations, such as managing Facts and Attributes. Role examples: User, Administrator, Moderator, Creator, Friend, Guest, and others. Очень важно обеспечить надёжную ролевую систему безопасности и изолирования данных. Примеры ролей: Пользователь, Админ, Модератор, Создатель, Доверенный друг, Гость, и т.д.
11. FactSet is a sequence of ordered Facts. ФактСет - это отсортированная последовательность Фактов.
12. Phrase is internationalized text representation. For each language Phrase can have a corresponding text. Фраза пердставляет собой интернационализированный текст. Для каждого языка фраза может иметь свою трансляцию.
13. Phrase Translation is a text associated with both: Phrase and Language. Перевод Фразы - это текст ассоциированный как с Фразой, так и с Языком.
14. The following is an example of Attribute pseudo-specification: Пример квази-спецификации Атрибутов.
Attribute: Phrase
Name: Language
Description: Language Attribute
Attribute: Language
Name: English
Description: English Language (default)
Attribute: Language
Name[English]: Russian
Description[English]: Russian Language
Name[Russian]: Русский
Description[Russian]: Русский язык
Attribute: Фраза
Name: User
Description: User Attribute
Name[Russian]: Пользователь
Attribute: User
Name: Admin
Description: Administrator of data or its part
Name[Russian]: Админ
Description[Russian]: Администратор всех или части данных.
Attribute: User
Name: Author
Description: Author of record: Fact or Attribute
Name[Russian]: Создатель
Description[Russian]: Создатель записи: факта или аттрибута
Attribute: User
Name: Editor
Description: User assigned for as content supervisor for all or part of data.
Name[Russian]: Редактор
Description[Russian]: Пользователь утвержденный как ответственный за редактирование записей (контента), как всех данных, так и любой их части.
Attribute: User
Name: Friend
Description: Friend of Author, who can edit data on Author's behave.
Name[Russian]: Друг
Description[Russian]: Доверенное лицо автора, кто тоже может редактировать данные автора
Attribute: User
Name: Guest
Name[Russian]: Гость
Attribute: User
Name: Moderator
Name[Russian]: Модератор
Attribute specification starts from the keyword “Attribute” following after colon by the comma-delimited list of attribute names to “derive” from. Property “Name” is mandatory and must be unique. Property “Title” is optional, and not necessary unique. If it is omitted, Name value is assumed for Title. Property “Description” is also optional and not required to be unique. If Description is not specified, value of Title is assumed. Спецификация Атрибута начинается с ключевого слова «Атрибут», затем после двоеточия следует список имен атрибутов из которых он «извлечен». Поле «Название» обязательно и уникально. «Титул» необязателен и не уникален. Если Титул не дан, то будет использовано «Название». «Описание» необязательно и не уникально. Если оно не дано, то будет использован «Титул».
15. The following is an example of Fact data pseudo-specification: Пример квази-спецификации Фактов:
Fact[Admin]Name[English]: FactAdmin
Description[English]: Default Fact System Administrator
Name[Russian]: Факт-админ
Description[Russian]: Системный администратор "Фактов"
At first, there is a type specification “Fact” following by specification of all comma-delimited fact attributes in square brackets. After that there is a specification of properties in Name/Value format. Every phrase value can be prefixed by Language name. If language name is not specified, the default language is assumed. Сначала идёт тип данных: Факт, затем его атрибуты разделённые запятыми. После этого идут поле Название, и поле Описание. Любая фраза может иметь префикс с названием языка. Если язык не обозначен, подразумевается язык «по-умолчанию», который в этом случае Английский.
16. The following is a list of functions and stored procedures:
· fn_MakePathItem(id)
· fn_FindValueType(path)
· p_PhraseTranslation_Save(translationID out, phraseID, translationValue, languageID, creatorID, newPhraseUid, newTranslationUid)
· p_AttributePath_Save(attributeID, attrBaseNameList, creatorID, uidNewAttributePath)
· p_Attribute_Save(attributeID, languageID, attrName, creatorID, attrBaseNameList, attrTitle, attrDescription, optionDisplay, optionValues, uidNewAttribute)
· p_Attribute_Import(languageID, skipFirstLineCount, attrText, creatorID)
· p_FactAttribute_Modify(factAttributeID, attributeID, attributeValue, valueType, languageID, creatorID)
· p_FactAttribute_Save(factAttributeID, factID, attributeList, creatorID, languageID, uidNewFactAttribute)
· p_Fact_Save(factID, languageID, factName, creatorID, attributeList, factTitle, factDescription, uidNewFact)
· p_Fact_Import(languageID, skipFirstLineCount, factText, creatorID)
17. The following is an example of loading basic attributes and facts:
PRINT '------------------------------------- Essential Facts and Basic Attributes';
exec dbo.p_Fact_Import 2, 1, N'Columns: Name, Title, Description, Fact Attributes, Base Attributes, Uid
Admin //Fact #1
// Essential Facts: Languages
English //Fact #2
Russian //Fact #3
// Essential Attributes
Attribute Attribute Category, Label Attribute
Phrase Phrase Textual information on one or several languages Attribute
Language Language Phrase
User User Phrase
sysValue Value Actual value stored in Fact-Attribute Attribute
Number Number sysValue
Quantity Quantity Number
Uom Unit of Measure Attribute
// Essential Facts: Details
English English English language Language
Russian Russian Russian language Language
Admin Administrator Domain administrator User
// Data Formats
DataFormat Data Format Attribute
Array Array Array of fixed size elements DataFormat
List List List of comma-separated values DataFormat
Collection Collection Text Collection of pipe-enclosed values DataFormat
IdArray Id Array Array of ids Array,Integer
UidArray Uid Array Array of uids Array,Uid
NameList Name List Comma-separated list of fact names List,Text
KeyList Key List Comma-separated list of fact keys (names, ids, or uids) List,Text
NameCollection Name List Pipe-enclosed list of names Collection,Text
Xml Xml Xml data format DataFormat,Phrase
Json Json Json data format DataFormat, Phrase
// Core Attributes
Boolean Boolean Yes/No. The mere existence of the Fact Attribute sysValue
Text Text Textual Information sysValue
Integer Integer Simple Number Number
Option Options Optional data in JSON format Json
IntegerOption Numeric Option Integer, Option
TextOption Text Option Textual Information Text, Option
Century Century Integer
Amount Amount Amount of money sysValue
DayOfWeek Day of Week IntegerOption{display: "|Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday", values: "|0|1|2|3|4|5|6"}
FactSet Fact Set Group of ordered facts Attribute
File File Uploaded file Attribute
GeoPoint Geo Point Geographical Point, including comma-delimited latitude and longitude numbers. Attribute
Month Month Number IntegerOption{display: "|January|February|March|April|May|June|July|August|September|November|December", values: "|1|2|3|4|5|6|7|8|9|10|11|12"}
RealNumber Real Number Math number Number
Season Season Season of a year IntegerOption {display: "|Winter|Spring|Summer|Autumn", values: "|1|2|3|4"}
Time Time Date/time value sysValue
TimeAge Geological Age Uom
TimeDescription Time Description Phrase
TimePhrase Time Phrase Phrase
Uid Uid Auto-generated Globally Unique Identifier Attribute
Year Year Integer
// Basic Attributes
Gravity Gravity Number
Mass Mass Gravity,Number
Weight Weight Mass
// Basic Physical Attributes
Color Color Attribute
Direction Direction Attribute
Angle Angle Number
Length Length Number
Depth Depth Length
Distance Distance Length
Size Size Length
Width Width Length
Area Area Length
Volume Volume Area
Density Density Mass of a unit of volume Number
Vector Vector Direction,Number
Force Force Vector
Energy Energy Force,Distance
Pressure Pressure Number
Temperature Temperature Number
// Units of Measure
each Each Uom,Quantity
Currency Currency Uom
USD US Dollar US Currency Currency
RUB Ruble Russian Currency Currency
EUR Euro European Union Currency Currency
m Meter Uom,Number
mm Millimeter One thousandth of a meter m
km Kilometer Thousand meters m
gm Gram Uom,Weight
kg Kilogram Thousand gramms gm
ton Ton Thousand kilograms kg
megaton Megaton Million tons ton
sec Second Uom, Number
min Minute 60 seconds sec
hour Hour 60 minutes min
day Day 24 hours hour
// Geographical Attributes
Geo Geography Geographical term Attribute
GeoArea Geo Area Geographical Area Geo,Area
World World Geo
Land Land Geo
Water Water Geo
Lake Lake Water,GeoArea
Sea Sea Water,GeoArea
Region Region Land,GeoArea
Continent Continent Land,GeoArea
Landmark Landmark Land,GeoPoint
Headquarters Headquarters Landmark
House House Landmark
Path Path Geo
Road Road Land,Path
Railroad Railroad Road
Border Border Land Border Land,Path
River River Water,Path
Channel Channel Water,Path
Strait Strait Water,Path
Settlement Settlement Land,GeoArea
District District Land,GeoArea
Village Village Land,GeoArea
City City Settlement
Capital Capital City
State State GeoArea
Country Country GeoArea
', 1;
PRINT '------------------------------------- Основные Факты и Атрибуты';
exec dbo.p_Fact_Import 3, 1, Поля: Имя, Титул, Описание, Аттрибуты фактов, Базовые атрибуты, ГУН
// Основные Факты
Admin Администратор Администратор домена
English Английский Английский язык
Russian Русский Русский язык
// Основные Атрибуты
Attribute Атрибут Категория, Метка
Boolean Флаг Да/Нет. Само существование записи Факта-Атрибута
Text Текст Текстовая информация
Integer Целое Число
Option Дополнение Дополнительные данные в формате JSON
IntegerOption Числовой выбор Варианты чисел, включая диапазоны.
TextOption Текстовый выбор Текстовые варианты
Century Век
Amount Деньги
DayOfWeek День Недели IntegerOption{display: "|Понедельник|Вторник|Среда|Четверг|Пятница|Суббота|Воскресенье", values: "|1|2|3|4|5|6|0"}
FactSet Факт-Группа Отсортированная группа Фактов
File Файл Загруженный файл
GeoPoint Гео Точка широта и долгота
Language Язык
Month Месяц IntegerOption {display: "|Январь|Февраль|Март|Апрель|Май|Июнь|Июль|Август|Сентябрь|Октябрь|Ноябрь|Декабрь", values: "|1|2|3|4|5|6|7|8|9|10|11|12"}
Phrase Фраза Текстовая информация на одном или нескольких языках
RealNumber Реальное число математическое число
Season Сезон Время Года IntegerOption {display: "|Зима|Весна|Лето|Осень", values: "|1|2|3|4"}
Time Время Точное время
TimeAge Эпоха
TimeDescription Время (описание) Описание времени
TimePhrase Время (текст) Текстовое представление времени
Uid ГУН Автоматически генерируемый глобально уникальный номер
User Пользователь
Year Год
// Географические Атрибуты
Geo Гео География
Area Площадь Географическая площадь
World Мир Земной шар
Land Суша Земля
Water Вода
Lake Озеро
Sea Море
Region Регион Область
Continent Континент
Landmark Ориентир Географический знак
Headquarters Центр Главное управление
House Дом
Path Путь
Road Дорога
Railroad Железная дорога
Border Граница
River Река
Channel Канал
Strait Пролив
Settlement Поселение Населенный пункт
District Район Участок, зона
Village Деревня Поселок, городок
City City Settlement
Capital Столица
State Штат Государство
Country Страна Гоударство
', 1;
Oбщие принципы от chispa1707 смотри
здесь.