Перейти до основного вмісту

Словник

Вкладка словника зберігає стандарт іменування діаграми у трьох словниках, кожен на окремому аркуші, який редагується як електронна таблиця:

  • Domains: іменовані типи даних, як-от Name для VARCHAR(100). Стовпець, прив’язаний до домену, має його тип даних.
  • Words: стандартні слова, з яких складаються логічні назви, кожне зі скороченням, яке використовує для нього фізична назва, як-от Customer і CUST.
  • Terms: цілі логічні назви, кожна з фізичною назвою та доменом, які вона задає, як-от Customer Name із CUST_NM.

З логічної назви таблиці або стовпця за цими словниками формується фізична назва, а термін стовпця може ще й прив’язати стовпець до домену — див. формування фізичних назв.
Четвертий аркуш, Checks, перелічує проблеми, які словники виявляють у назвах і типах діаграми та в самих словниках, як-от заборонене слово в логічній назві, — див. аркуш перевірок.

Відкриття вкладки​

Перейдіть на вкладку Dictionary кнопкою зі значком книги на панелі інструментів, між Code Generator і Settings, або виберіть Dictionary у підменю Tab швидкого пошуку.
Діаграма може відкриватися саме на цій вкладці — див. параметр Canvas Type у розділі блокування.

Вкладка відкривається на аркуші Domains, доки ви не виберете інший.
Щоразу, коли вона відкривається, аркуш повертається з тим виділенням і прокручуванням, які ви залишили, а під час першого відвідування — з виділеною першою клітинкою. Фокус клавіатури переходить до сітки аркуша, тож введення тексту чи клавіші зі стрілками діють одразу.

Показаний аркуш, а також пошук, виділення, прокручування й ширини стовпців кожного аркуша належать лише вам.
Ніщо з цього не зберігається у файлі, не записується в історію змін і не передається співавторам. Усе це залишається, поки редактор відкритий, — і після перемикання вкладок, і для інших документів, завантажених у той самий редактор.

Аркуші​

Панель угорі містить чотири кнопки аркушів — Domains, Words, Terms і Checks, — і кнопка показаного аркуша виглядає натиснутою. Кожна показує біля назви лічильник: кількість рядків її аркуша, незалежно від того, що показує пошук, а на кнопці Checks — кількість перевірок із кольором, що відповідає їхньому рівню, — див. аркуш перевірок.
Далі йде поле пошуку — див. пошук. У кінці панелі на аркушах Domains, Words і Terms, крім редактора в режимі лише для читання, є чотири інструменти: Add Row, Delete Rows, Import CSV і Export CSV — див. додавання й видалення рядків та імпорт і експорт CSV.
У вузькому вікні або з мовою інтерфейсу, у якій підписи довші, панель переноситься на кілька рядків, тож кожна кнопка залишається під рукою.

Під сіткою рядок стану показує кількість рядків, що залишаються після пошуку, як-от 4 rows, а поки виділення охоплює хоча б один рядок, — скільки рядків воно охоплює, як-от 1 selected. Рядок, спільний для двох діапазонів, рахується один раз, тож це число дорівнює кількості рядків, які видалила б кнопка Delete Rows.
Номери рядків ліворуч нумерують рядки в тому порядку, в якому їх показує аркуш, починаючи з 1. Клітинку лише для читання, а це кожна клітинка на аркуші Checks і кожна клітинка в редакторі в режимі лише для читання, показано на сірому тлі, крім тих місць, які позначає перевірка.
Порожній аркуш Domains, Words або Terms показує напис Import a CSV file or add a row, крім редактора в режимі лише для читання.

Стовпці кожного аркуша по порядку:

АркушСтовпці
DomainsDomain, Category, Data Type, Description
WordsWord, Abbreviation, English Name, Description, Synonyms, Forbidden Words
TermsTerm, Physical Name, Domain, Description, Synonyms
ChecksType, Target, Detail

Що роблять клітинки:

  • Значення Data Type домену записується як тип стовпця, як-от VARCHAR(100) чи NUMERIC(15,2), і цей тип має кожен стовпець, прив’язаний до домену, — див. домени й типи даних.
  • Значення Abbreviation слова — це те, що фізична назва використовує замість цього слова, — див. зі слів.
  • Значення Synonyms і Forbidden Words слова перелічують через кому інші слова на позначення того самого. У кожного елемента відкидаються пробіли на початку й у кінці, порожній елемент пропускається, а елемент, що збігається із самим словом, ігнорується. З логічної назви, яка використовує такий елемент, фізична назва не складається, а аркуш Checks позначає таку логічну назву й називає слово, яке слід використати натомість, — див. що виявляє кожна перевірка.
  • Значення Term терміна — це ціла логічна назва, а його значення Physical Name — це назва, яку дає ця логічна назва, — див. з терміна.
  • Клітинка Domain терміна показує назву домену, до якого прив’язаний термін, і залишається порожньою, поки термін не прив’язаний до жодного домену або прив’язаний до домену, який відтоді видалено, — див. домен терміна.
  • Поля Category, English Name, кожне поле Description і поле Synonyms терміна — це лише примітки. Вони нічого не змінюють, і жодна перевірка їх не читає.

Коли вибрано мову інтерфейсу з письмом справа наліво, панель, меню сітки й рядок стану відображаються дзеркально, а аркуші та список доменів терміна залишаються в напрямку зліва направо.

Формування фізичних назв​

Словники можуть сформувати фізичну назву таблиці або стовпця — назву, яку записують схема SQL і генератор коду, — з їхньої логічної назви. Спершу шукається термін, значення Term якого збігається з логічною назвою, а якщо такого немає, назва складається зі скорочень слів.
Наприклад, якщо є слова Customer (CUST), Name (NM), Number (NO), Order (ORD) і Date (DT) та термін Customer Number із фізичною назвою CUST_NO і доменом Number, тип даних якого — INT:

  • Логічна назва Customer Number дає стовпцю назву CUST_NO, прив’язує його до домену Number і задає йому тип INT.
  • З Order Date складається ORD_DT.
  • Таблиця з логічною назвою Customer отримує назву CUST.

Якщо аркуші Words і Terms порожні, нічого не формується.

Коли формується назва​

Фізична назва формується, коли записується логічна назва:

  • На полотні — коли редактор клітинки логічної назви закривається клавішею Enter, Tab, Escape або клацанням деінде і логічна назва відрізняється від тієї, з якою він відкрився. Кожне натискання клавіші під час введення записує лише логічну назву — див. введення логічної назви.
  • Одразу, коли ви вибираєте термін зі списку під клітинкою, — див. доповнення назв термінів.
  • Коли вставлення з буфера обміну заповнює клітинку логічної назви — див. копіювання/вставлення стовпців.
  • Коли пошук і заміна замінює логічну назву — один збіг чи всі.
  • Коли агент для програмування задає логічну назву.

Назва формується лише тоді, коли фізична назва порожня або сама була сформована, — див. назви, задані вручну.
Вибір терміна, вставлення чи заміна записують логічну назву й те, що з неї формується, одним кроком відміни. На полотні назва, сформована під час закриття редактора, — це окремий крок відміни після введення: перша відміна прибирає сформовану назву разом із доменом і типом, які задав термін, і залишає логічну назву, яку ви ввели.

Пізніше назва сама по собі повторно не формується. Нове значення Abbreviation слова, нове значення Physical Name чи Domain терміна, а також нові слова чи терміни залишають уже сформовані назви без змін; щоб їх оновити, використовуйте повторне формування фізичних назв. Виняток — значення Data Type домену: воно одразу доходить до його стовпців.

З терміна​

Спершу на аркуші Terms шукається термін, значення Term якого дорівнює логічній назві. Пробіли на обох кінцях і форма нормалізації Unicode не враховуються, але регістр літер має значення, тож customer number не збігається з Customer Number. Якщо два терміни мають однакову назву, діє перший на аркуші.

  • Термін дає своє значення Physical Name, а поки воно порожнє — назву, яку складають його слова, як описано нижче, якщо вони її складають.
  • Для стовпця термін також прив’язує домен зі свого значення Domain, поки цей домен є на аркуші Domains, і це задає стовпцю тип даних домену, — див. прив’язування стовпця. Він робить це, навіть коли не дає назви. Термін без домену нічого не відв’язує.
  • Таблиця отримує від терміна лише фізичну назву.

Зі слів​

Якщо відповідного терміна немає, назву складають слова:

  1. Логічна назва розбивається на частини за пробілами та символами _, -, · і /, і жодне слово не охоплює місця розбиття.
  2. Кожна частина читається зліва, і в кожній точці береться найдовший текст, який є на аркуші Words як значення Word, синонім або заборонене слово, без повернення назад. Якщо є слова 가입, 가입일 і 일자, то 가입일자 читається як 가입일 і 자, тож 자 лишається незареєстрованим, а 가입 일자 читається як 가입 і 일자. Регістр літер має значення: member — це не слово Member.
  3. Фізична назва складається зі значень Abbreviation кожного слова в тому вигляді, в якому їх введено, з’єднаних символом _, як-от ORD_DT. Якщо два слова мають однакову назву, скорочення дає перше на аркуші. Обмеження довжини немає, і параметри Table Name Case та Column Name Case генератора коду ролі не відіграють.

Діє принцип «усе або нічого». Якщо будь-який фрагмент є синонімом, забороненим словом або текстом, якого не містить жодне слово, або якщо в слова порожнє значення Abbreviation, назва не складається, і фізична назва залишається такою, як була.

Назви, задані вручну​

Словники заповнюють фізичну назву лише тоді, коли вона порожня або сама була заповнена ними. Редактор запам’ятовує це для кожної таблиці й кожного стовпця, хоча на полотні це ніяк не видно.

  • Назва, яку ви записуєте, стає заданою вручну: введення в клітинці назви, заміна назви таблиці чи стовпця через пошук і заміну, вставлення поверх клітинки назви стовпця та перейменування агентом для програмування. Логічна назва, записана пізніше, залишає її без змін, записує лише логічну назву й не прив’язує жодного домену.
  • Очищення назви знову віддає її словникам, оскільки порожня назва завжди формується.
  • Логічна назва, з якої нічого не формується, залишає фізичну назву та її стан такими, як були: порожня назва лишається порожньою, а сформована назва залишається тією самою, і її й далі формують словники.
  • Нова таблиця чи новий стовпець починає з порожньої назви, тож її формує перша логічна назва. Стовпець зовнішнього ключа, який додає зв’язок, отримує назву за своїм ключем, і ця назва вважається заданою вручну, — див. назви стовпців зовнішнього ключа.
  • Назви, які приносить пункт Import або Import and Add для схеми SQL, GraphQL, DBML чи AML, а також назви діаграми, створеної випуском, у якому ще не було вкладки словника, вважаються заданими вручну, тож логічна назва, записана для них пізніше, нічого не формує.
  • Дубльована таблиця, стовпець, переміщений в іншу таблицю за маркер перетягування, вставлення скопійованих таблиць і додавання JSON-файлу через Import and Add зберігають стан кожної назви. Назви стовпців, вставлених у виділені таблиці як нові стовпці, вважаються заданими вручну, крім випадку, коли вставлена назва порожня, а їхня логічна назва формує назву.
  • Повторне формування фізичних назв знову віддає словникам назву, задану вручну, зокрема й імпортовану.

Два стовпці, одна назва​

Стовпець нічого не формує, коли інший стовпець його таблиці вже має назву, яку він сформував би. Він зберігає свою назву, її стан і прив’язку до домену, а записується лише його логічна назва. Назви порівнюються без урахування регістру літер і пробілів на обох кінцях, як і назви стовпців зовнішнього ключа.
Коли одна зміна дала б двом стовпцям однакову назву, як це можуть зробити кнопка Replace All або пункт Derive Physical Names Again для таблиці, назву отримує перший стовпець у таблиці.
Наприклад, рекурсивний зв’язок таблиці members із ключем MBR_NO додає стовпець MBR_NO_2, який копіює логічну назву Member Number. Пункт Derive Physical Names Again дав би йому назву MBR_NO, яку вже має ключ, тож він зберігає MBR_NO_2.
Для таблиць такого правила немає: дві таблиці можуть сформувати однакову назву.

Повторне формування фізичних назв​

Використовуйте пункт Derive Physical Names Again після зміни значення Abbreviation слова або значення Physical Name чи Domain терміна, оскільки самі ці зміни нічого не перейменовують. Він знову віддає словникам назви, які охоплює, і формує їх повторно за наведеними вище правилами, зокрема й назви, які ви задали самі. Він доступний лише на вкладці ERD і недоступний у редакторі в режимі лише для читання:

  • Контекстне меню таблиці — одразу після пункту Focus on this table або Focus on selected tables. Поки таблиця є однією з двох чи більше виділених таблиць, пункт Derive Physical Names Again охоплює їх усі, хоч би де на таблиці ви клацнули правою кнопкою миші. Інакше клацання правою кнопкою миші на рядку стовпця показує пункт Derive Physical Name Again лише для цього стовпця, а на заголовку таблиці — пункт Derive Physical Names Again для назви таблиці й кожного стовпця.
  • Контекстне меню полотна — одразу після підменю Name View: пункт Derive Physical Names Again для кожної таблиці й кожного стовпця діаграми. Він не показується, поки в діаграмі немає жодної таблиці.
  • Швидкий пошук — у вигляді пунктів для стовпця у фокусі, таблиці у фокусі, виділених таблиць і всієї діаграми.

Зміна скорочення Number з NO на NUM на аркуші Words, при цьому фізичні назви на діаграмі залишаються MBR_NO і PAY_NO, а потім Derive Physical Names Again з меню полотна перетворює їх на MBR_NUM і PAY_NUM, тоді як ORD_NO, яку дає її термін, не змінюється

Назва кожної охопленої таблиці й кожного охопленого стовпця, що мають логічну назву, формується повторно. Стовпець також отримує домен, який дає його термін, а разом із ним і тип домену, що поширюється по зв’язках, поки ввімкнено синхронізацію типів даних у зв’язках.
Пункт не чіпає таблицю чи стовпець без логічної назви, а також стовпець, нову назву якого вже має інший стовпець його таблиці, — див. два стовпці, одна назва. Кожен із них зберігає свою назву та її стан, тобто чи задано її вручну, чи її формують словники, а стовпець також зберігає прив’язку до домену.
Логічна назва, з якої тепер нічого не формується, залишає фізичну назву без змін, але знову віддає її словникам, тож наступна логічна назва, яку ви запишете, сформує її.
Уся дія є одним кроком відміни, хоч скільки назв, прив’язок і типів вона змінює. Вона не записує кроку лише тоді, коли нічого не змінює, а повернення словникам назви, заданої вручну, вважається зміною, навіть якщо назва вже така, як її дають словники.

Власне значення Physical Name терміна повторно не складається зі змінених слів, тож спершу змініть термін, а потім формуйте назви повторно.

Домени й типи даних​

Стовпець, прив’язаний до домену, має тип, заданий значенням Data Type домену. Прив’язування стовпця одразу задає йому цей тип.
Коли значення Data Type домену змінюється — через редагування, вставлення чи імпорт на аркуші Domains або зміну співавтором чи агентом для програмування, — кожен прив’язаний до нього стовпець отримує новий тип у тому самому кроці. Поки ввімкнено синхронізацію типів даних у зв’язках, кожна з цих змін поширюється далі по зв’язках так само, як і зміна типу, введена вручну; поки її вимкнено, змінюються лише прив’язані стовпці.
Перейменування домену змінює лише назву, яку показують клітинки домену стовпців.

Зміна типу, зроблена на аркуші Domains, відміняється там же разом із типами стовпців, які вона задала, — див. аркуші словника.
Відміна чи повторення на вкладці ERD, які знову прив’язують стовпець до домену або повертають стовпець, прив’язаний до домену, задають стовпцю поточний тип домену. Ті, що повертають інший тип, відв’язують стовпець від домену.

Прив’язування стовпця​

Стовпець прив’язується до домену:

  • Вибором домену в клітинці домену стовпця, яку показує View Option → Domain, або у варіанті Logical Names — у клітинці типу, що показується замість неї, — див. клітинка домену.
  • Логічною назвою, термін якої дає домен, — див. з терміна. Це відбувається лише тоді, коли назва формується, тож не для назви, заданої вручну, і не для стовпця, сформовану назву якого вже має інший стовпець.
  • Пунктом Derive Physical Name Again або Derive Physical Names Again, який прив’язує домен терміна кожного охопленого стовпця.
  • Зв’язком: стовпець зовнішнього ключа копіює домен свого ключа разом із його типом і логічною назвою — див. ідентифікувальні зв’язки. Ключ, копія якого отримує інший тип, як-от у ключа типу serial, домену не передає.
  • Дублюванням його таблиці або переміщенням в іншу таблицю за маркер перетягування — в обох випадках прив’язка зберігається. Вставлення скопійованих таблиць чи стовпців зберігає її, лише якщо ця діаграма містить домен і домен досі має тип скопійованого стовпця, тож копія з іншої діаграми з’являється неприв’язаною, — див. копіювання/вставлення таблиць і нотаток. Пункт Import and Add не прив’язує жодного стовпця.
  • Назвою домену, вставленою в клітинку домену, — див. копіювання/вставлення стовпців.

Відв’язування​

  • Введення типу в клітинку DataType прив’язаного стовпця або прийняття пропозиції відв’язує стовпець від домену, щойно його тип відрізняється від типу домену, і стовпець зберігає введений вами тип — див. автодоповнення типів даних. Повторне введення типу домену не прив’язує стовпець знову; натомість виберіть домен у його клітинці домену. Вставлення поверх клітинки DataType і зміна типу агентом для програмування відв’язують так само.
  • Поки ввімкнено синхронізацію типів даних у зв’язках, кожен стовпець, до якого доходить зміна типу і новий тип якого відрізняється від типу його власного домену, відв’язується в тому самому кроці, як-от зовнішній ключ, прив’язаний до власного домену. Вікно зіставлення стовпців так само відв’язує стовпці, тип яких воно змінює.
  • Вибір None у клітинці домену відв’язує стовпець і зберігає його тип.
  • Зміна чи очищення значення Domain терміна або видалення терміна не змінює жодного стовпця.

Видалення домену​

Видалення рядка домену залишає його стовпці з їхніми типами, а їхні прив’язки зберігаються. Стовпці не показують жодного домену, а аркуш Checks показує перевірку Unknown domain для кожного з них, поки на аркуші Domains ще є хоча б один домен. Відміна видалення на аркуші Domains знову показує прив’язки.
Поки домену немає, введення в такий стовпець типу, відмінного від типу домену, остаточно відв’язує його, і так само діє вибір None у його клітинці домену.
Під час збереження ці прив’язки не потрапляють у файл, тож після повторного відкриття діаграми ці стовпці неприв’язані.

Термін, прив’язаний до видаленого домену, показує порожню клітинку Domain, позначену як Unknown domain. Клавіша Delete або Backspace на цій клітинці відв’язує термін від домену — див. домен терміна.

Аркуш перевірок​

Аркуш Checks перелічує те, що перевірки словників виявляють у самих словниках, а також у таблицях і стовпцях діаграми. Перевірки лише читають: вони нічого не змінюють.
Кожна перевірка виконується лише тоді, коли аркуш, який вона читає, містить хоча б один рядок, а перевірки слів — лише тоді, коли аркуш Words містить слово з назвою, тож для діаграми з порожніми словниками список порожній.

Відображення назви Customer Num червоним кольором і Order Stat бурштиновим у варіанті Logical Names, аркуш Checks із їхніми трьома перевірками й червоним лічильником, подвійне клацання рядка Forbidden word з переходом до Customer Num на діаграмі, а потім заміна назви на Member Number, після якої залишається одна перевірка

Його три стовпці доступні лише для читання:

  • Стовпець Type називає перевірку — див. що виявляє кожна перевірка.
  • Стовпець Target вказує слово, термін або домен за його назвою, таблицю — за її назвою, а стовпець — у вигляді table.column, причому таблицю й стовпець названо так, як їх називає відображення назв, а там, де варіант не показує назви, стоїть unnamed.
  • Стовпець Detail показує, що виявила перевірка, а після → — що натомість пропонують словники, кілька пропозицій через кому, як-от 멤버 → 회원. Порожня сторона має вигляд —, як у — → NUMERIC(15).

Спершу йдуть перевірки слів, потім термінів і доменів, а далі таблиця за таблицею, і після кожної таблиці — її стовпці.
Список стежить за кожною зміною, щойно її внесено, зокрема за зміною співавтора чи агента для програмування, а також за кожним перемиканням відображення назв.
Лічильник кнопки Checks червоний, поки хоча б одна перевірка є помилкою, бурштиновий, поки всі вони є попередженнями, і приглушений, коли перевірок немає.

Рядки не можна редагувати, додавати, видаляти, сортувати, імпортувати чи експортувати: панель не показує інструментів, клацання правою кнопкою миші не відкриває меню сітки, а відміна й повторення нічого не роблять. Пошук, виділення й копіювання працюють так само, як на інших аркушах.

Клавіша Enter або подвійне клацання рядка веде до того, що він називає:

  • Слово, термін або домен: вкладка показує його аркуш із виділеною клітинкою, яку читає перевірка, — назвою або значенням Domain терміна, — і з його рядком першим серед видимих. Пошук аркуша очищається, якщо він ховає рядок. Якщо рядок тим часом видалено, перехід не відбувається.
  • Таблиця або стовпець: відкривається вкладка ERD, де виділено лише цю таблицю, а клітинка, яку читає перевірка, перебуває у фокусі. Це клітинка назви, логічної назви або домену, а там, де рядок не показує цієї клітинки, — клітинка, показана на її місці. Фокус клавіатури переходить до полотна, а область перегляду переміщується за правилом із розділу куди веде перехід.

Подвійне клацання заголовка, краю стовпця, смуги прокручування чи області під рядками нікуди не веде.
Агент для програмування отримує ті самі перевірки в тому самому порядку за допомогою інструмента erd_list_checks — див. перевірки словника.

Інші три аркуші позначають клітинки, які читають перевірки, — назву або значення Domain терміна, — червоним чи бурштиновим текстом на тонованому тлі:

  • Червоним: назву, яку має інший рядок того самого аркуша, значення Domain терміна, прив’язане до видаленого домену, і значення Term, яке використовує заборонене слово.
  • Бурштиновим: значення Term, яке використовує синонім або незареєстроване слово.

Клітинка отримує колір серйознішого з її рівнів. Позначки видно й у редакторі в режимі лише для читання, а сам аркуш Checks не забарвлюється. Про позначки на полотні ERD див. позначки на полотні.

Що виявляє кожна перевірка​

TypeРівеньЩо виявляєDetail, приклад
Duplicate nameПомилкаЗначення Word, Term або Domain, яке має також інший рядок того самого аркуша. Показується кожен із цих рядків.Member
Unknown domainПомилкаСтовпець або термін, досі прив’язаний до видаленого домену, поки аркуш Domains містить хоча б один доменНазва видаленого домену
Forbidden wordПомилкаФрагмент логічної назви або значення Term, який якесь слово містить у полі Forbidden Words커스터머 → 고객
Unregistered wordПопередженняФрагмент логічної назви таблиці чи стовпця або значення Term, якого не містить жодне слово자
SynonymПопередженняФрагмент, який якесь слово містить у полі Synonyms멤버 → 회원
Physical name mismatchПопередженняТаблиця або стовпець, логічна назва яких збігається з терміном, але фізична назва не та, яку дає термінmbr_no → MBR_NO
Domain type mismatchПопередженняСтовпець, значення DataType якого не збігається зі значенням Data Type домену, до якого він прив’язанийINT → NUMERIC(15)
  • Назви порівнюються без пробілів на початку й у кінці, з урахуванням регістру літер, тож Member і member — це дві різні назви, а порожня назва ніколи не є дублікатом. Аркуші відхиляють зміну, яка дала б двом рядкам однакову назву, тож перевірка Duplicate name з’являється лише там, де перетнулися дві зміни, як-от коли двоє співавторів одночасно дають назви рядкам, або у файлі, відредагованому деінде.
  • Перевірки слів читають назву так само, як описано в розділі зі слів, і показують кожен відмінний фрагмент один раз для кожної назви. Перевірки Forbidden word і Synonym пропонують слово, у списку якого є цей фрагмент.
  • Перевірка Physical name mismatch порівнює назву без пробілів на початку й у кінці зі значенням Physical Name терміна або, поки його немає, з тим, що складають слова терміна, і нічого не повідомляє, поки термін не дає назви. Стовпець зовнішнього ключа, який скопіював логічну назву свого ключа, отримує цю перевірку щоразу, коли його власна назва відрізняється від назви терміна, як-от members_id → MBR_ID. Пункт Derive Physical Name Again виправляє це, якщо тільки цієї назви не має інший стовпець.
  • Перевірка Domain type mismatch ніколи не виникає внаслідок змін в одному редакторі, оскільки прив’язаний стовпець зрештою завжди має тип свого домену. Вона може з’явитися, коли один співавтор прив’язує стовпець, а інший тим часом змінює тип цього домену, або у файлі, записаному деінде. Повторний вибір домену в клітинці домену стовпця задає стовпцю тип домену, а None відв’язує стовпець. Прив’язка до видаленого домену показується лише як Unknown domain.

Позначки на полотні​

Полотно ERD показує назву, яку позначають перевірки, кольором її перевірки:

  • Клітинка логічної назви в заголовку таблиці чи в рядку стовпця показується червоним, поки її логічна назва використовує заборонене слово, а інакше — бурштиновим, поки вона використовує синонім або слово, якого немає на аркуші Words.
  • Клітинка фізичної назви в заголовку чи в рядку показується бурштиновим, поки термін, з яким збігається логічна назва, дає іншу фізичну назву.

Позначаються лише ці два типи клітинок, ніколи — клітинка домену чи клітинка DataType, тож перевірки Unknown domain і Domain type mismatch стовпця видно лише на аркуші Checks.
Клітинка позначається лише за тим, що вона показує: варіант Physical Names може позначати лише фізичні назви, Logical Names — лише логічні назви, а Both Names — кожну клітинку за її власними перевірками, — див. відображення назв. Порожня клітинка зберігає колір свого заповнювача, а порожні словники нічого не позначають.
На заголовку таблиці в кольоровій групі таблиць позначка зберігає свій колір, лише поки залишається читабельною на кольорі групи; інакше назва набуває власного чорного чи білого кольору заголовка.

Позначки видно на полотні ERD, у подорожі в часі і в попередньому перегляді автоматичного розміщення, зокрема й у редакторі в режимі лише для читання. Вкладка візуалізації, обидві сторони перегляду відмінностей та експортоване зображення їх не показують.
Вони оновлюються з кожною зміною в момент, коли вона відбувається, — чи то зміна назви, чи слова, терміна або домену.

Пошук​

Поле пошуку має напис Search і показується на всіх чотирьох аркушах, зокрема й у редакторі в режимі лише для читання. Кожен аркуш має власний пошук.
Рядок відповідає пошуку, коли одна з клітинок, у яких виконується пошук, містить шуканий текст, без урахування регістру літер, форми нормалізації Unicode і пробілів навколо запиту. Збіг ніколи не охоплює дві клітинки. Клітинки, у яких виконується пошук:

  • Domains: Domain, Data Type і Description.
  • Words: Word, Abbreviation, English Name і Description.
  • Terms: Term, Physical Name і Description.
  • Checks: усі три, у тому вигляді, в якому їх показано мовою інтерфейсу.

Новий пошук переносить виділення на першу клітинку й прокручує аркуш догори.
Поки поле містить текст, кнопка x з підказкою Clear search очищає його й залишає текстовий курсор у полі. Клавіша Escape у полі теж його очищає.
У полі Ctrl + Z (Windows/Linux) або ⌘ + Z (Mac) відміняє введений вами текст, а не зміни аркуша, а клавіші рядків із розділу додавання й видалення рядків діють як клавіші для тексту.
Кнопка Add Row і вставлення рядків спершу очищають пошук, оскільки порожній рядок не відповідає жодному пошуку. Імпорт пошук зберігає.

Виділення й переміщення​

Сітка виділяє так само, як електронна таблиця:

  • Клацання виділяє клітинку, а перетягування — діапазон, прокручуючи аркуш біля його краю. Shift + click розширює виділення від активної клітинки, а Ctrl + click (Windows/Linux) або ⌘ + click (Mac) додає ще один діапазон.
  • Заголовок стовпця виділяє свій стовпець, номер рядка — свій рядок, а лівий верхній кут — усі клітинки, як і Ctrl + A (Windows/Linux) або ⌘ + A (Mac).
  • На Mac Ctrl + click діє як клацання правою кнопкою миші — див. меню сітки.

За допомогою клавіатури:

  • Клавіші зі стрілками переміщують на одну клітинку, а разом з Ctrl (Windows/Linux) або ⌘ (Mac) — до краю аркуша в цьому напрямку.
  • Home і End переходять до першої й останньої клітинки рядка, а разом з Ctrl або ⌘ — до першої й останньої клітинки аркуша.
  • Page Up і Page Down гортають на один екран рядків.
  • Утримання Shift разом із будь-якою з наведених вище клавіш натомість розширює виділення.
  • Tab і Shift + Tab переміщують праворуч і ліворуч, а Shift + Enter — угору. Сама клавіша Enter відкриває клітинку для редагування — див. редагування клітинок.

Коли рядки, на яких стоїть виділення, зникають через відміну або видалення співавтором, виділення повертається в межі рядків, що залишилися.

Перетягніть правий край заголовка стовпця, щоб змінити ширину стовпця, або двічі клацніть цей край, щоб підігнати стовпець під найширший текст у видимих рядках. Жодна клавіша не змінює ширину стовпця.

Редагування клітинок​

Введення тексту у виділеній клітинці замінює її значення. Enter, F2 або подвійне клацання відкриває значення для редагування в поточному вигляді, з текстовим курсором у кінці.
Клітинка містить один рядок тексту, тож табуляція чи розрив рядка, вставлені в неї, стають пробілом.

  • Enter записує зміну й переходить униз, а Tab записує її й переходить праворуч. Разом із Shift вони переходять угору або ліворуч.
  • Клацання деінде або вихід фокусу клавіатури із сітки теж записує зміну.
  • Escape скасовує її.

Редагування аркуша Words: введення NUM поверх клітинки й натискання Enter, вставлення рядка за допомогою ⌥ + Enter і його заповнення за допомогою Tab, сортування за Word з меню сітки, а потім пошук ord і очищення пошуку за допомогою Esc

Зміна, яка залишає значення таким, як було, нічого не записує, а записана зміна є одним кроком відміни свого аркуша, хоч скільки було введено.
Delete або Backspace, коли редагування не відкрито, очищає кожну виділену клітинку одним кроком.
Поки редагування відкрито, клавіші відміни й повторення відміняють і повторюють введений у клітинці текст, а клавіші рядків вводять текст — див. клавіші на вкладці.
Кожна клітинка на аркуші Checks і кожна клітинка в редакторі в режимі лише для читання доступна лише для читання й не відкривається для редагування.

Коли будь-який рядок зміни, вставлення чи очищення відхиляється, нічого з цієї дії не зберігається, а сповіщення про помилку пояснює причину, вказуючи кількість рядків і перші три з них:

  • Назва, яку має інший рядок аркуша або яку записує інший рядок того самого вставлення: Nothing saved: 1 row shares a name with another row (Member) або Nothing saved: 2 rows share a name with another row (…). Назви порівнюються без пробілів на початку й у кінці, з урахуванням регістру літер, тож Member і member різняться. Порожня назва ніколи не відхиляється.
  • Значення Domain терміна, задане текстом, що не збігається з назвою жодного домену на аркуші Domains: Nothing saved: 1 row names an unknown domain (…).
  • Рядок, який співавтор видалив, поки ви його редагували: Nothing saved: the row was removed.

Записане значення може вплинути не лише на свою клітинку:

  • Термін, якому задано значення Term, поки його значення Physical Name порожнє, отримує назву, яку складають його слова, якщо вони її складають, — див. зі слів. Це відбувається один раз: коли слова пізніше змінюються, назва повторно не складається.
  • Нове значення Data Type домену змінює тип кожного стовпця, прив’язаного до домену, у тому самому кроці відміни — див. домени й типи даних.

Домен терміна​

Enter, F2 або подвійне клацання клітинки Domain терміна відкриває під клітинкою або над нею, якщо там більше місця, список із полем пошуку з написом Domain.
Список містить None, а потім кожен домен, що має назву, у порядку аркуша Domains, і спершу підсвічено домен, до якого прив’язаний термін, або None. Введення символу в клітинці відкриває список, уже відфільтрований за цим символом.

  • Введення тексту звужує список до доменів, назви яких містять цей текст, без урахування регістру, прибирає None і підсвічує перший збіг.
  • ↑ і ↓ переміщують підсвічування, переходячи по колу на обох кінцях.
  • Enter або Tab вибирає підсвічений рядок, а клацання — клацнутий рядок, одним кроком відміни. Термін прив’язується саме до вибраного домену, навіть до одного з двох доменів з однаковою назвою, а None відв’язує його.
  • Escape або клацання поза списком закриває список, не записуючи нічого з введеного.

Якщо на аркуші Domains немає жодного домену з назвою, поле відкривається без списку.
Вставлений текст прив’язує термін до першого домену з такою назвою в списку, порожній текст відв’язує його, а текст, що збігається з показаним у клітинці, залишає прив’язку без змін. Будь-яка інша назва відхиляється — див. редагування клітинок. Delete або Backspace на клітинці відв’язує термін, навіть від видаленого домену.

Копіювання й вставлення​

Ctrl + C (Windows/Linux) або ⌘ + C (Mac) копіює виділення як текст, розділений табуляцією, по рядку тексту на кожен рядок аркуша, так, як його записують електронні таблиці, тож він вставляється в електронну таблицю як клітинки. Табуляція чи розрив рядка всередині значення стають пробілом.
Кілька діапазонів копіюються разом, лише коли вони охоплюють ті самі рядки, поруч один з одним, або ті самі стовпці, один над одним. Інакше нічого не копіюється й з’являється сповіщення про помилку Nothing copied: the ranges share no rows or columns.

Ctrl + V (Windows/Linux) або ⌘ + V (Mac) вставляє текст, розділений табуляцією, як-от клітинки, скопійовані з електронної таблиці, починаючи з активної клітинки вниз і праворуч:

  • Лапки вставляються як текст, тож клітинка електронної таблиці з розривом рядка не вставляється як одна клітинка.
  • Одне значення заповнює кожен виділений діапазон.
  • Рядки після останнього рядка додаються як нові рядки по порядку, тож вставлення в порожній аркуш заповнює його.
  • Стовпці після останнього стовпця пропускаються, і щойно решту збережено, про це повідомляє сповіщення Columns past the last one weren't pasted.
  • Після вставлення кількох клітинок виділяється записаний блок.

Вставлення є одним кроком відміни разом із доданими рядками й відхиляється повністю через повторювану назву або невідомий домен — див. редагування клітинок.
Копіювання, вставлення чи очищення понад мільйон клітинок нічого не робить, і з’являється сповіщення про помилку Nothing done: the selection covers too many cells.
Вирізання, Ctrl + X (Windows/Linux) або ⌘ + X (Mac), на аркуші нічого не робить. Копіювання й вставлення на цій вкладці ніколи не доходять до діаграми, а поки відкрито редагування клітинки, вони діють на текст у клітинці.

Додавання й видалення рядків​

Кнопка Add Row додає один порожній рядок у кінець аркуша. Вона очищає пошук, виділяє першу клітинку нового рядка й передає фокус клавіатури сітці, тож введення тексту заповнює цю клітинку.
Кнопка Delete Rows видаляє кожен рядок, який охоплює виділення, у будь-якому стовпці, і одна відміна повертає їх усі на свої місця. Її підказка називає клавішу, яка робить те саме.

Коли фокус клавіатури в сітці й жодна клітинка не редагується:

  • Alt + Enter (Windows/Linux) або ⌥ + Enter (Mac) вставляє під виділенням стільки порожніх рядків, скільки воно охоплює.
  • Alt + Shift + Enter (Windows/Linux) або ⌥ + Shift + Enter (Mac) вставляє їх над ним.
  • Alt + Backspace чи Alt + Delete (Windows/Linux) або ⌥ + Backspace чи ⌥ + Delete (Mac) видаляє рядки, які охоплює виділення.

Вони роблять те саме, що й пункти вставлення й видалення рядків у меню сітки, — див. меню сітки. Вставлення очищає пошук і розміщує нові рядки безпосередньо над першим рядком, який охоплює виділення, або безпосередньо під останнім. Воно виділяє їх у першому стовпці, причому активним стає перший із них, і є одним кроком відміни.

Ці клавіші — прив’язки Add Column і Remove Column на вкладці сполучень клавіш, тож хост, який перепризначає їх методом setKeyBindingMap, переносить і ці клавіші. Alt + Shift + Enter — це сполучення Add Column з доданою клавішею Shift, і власного рядка там воно не має.
У відкритому редагуванні та в полі пошуку вони діють як клавіші для тексту, тож на Mac ⌥ + Backspace видаляє слово. На аркуші Checks і в редакторі в режимі лише для читання вони нічого не роблять. На цій вкладці вони ніколи не додають і не видаляють стовпці таблиці.
В Obsidian вони доходять до вкладки навіть там, де гаряча клавіша Obsidian використовує те саме сполучення.

Рядок, який ніколи не заповнювали, або рядок, з якого видалено всі значення, показується на своєму аркуші й доходить до співавторів, але файл його не містить, тож після повторного відкриття діаграми його немає.

Меню сітки​

Клацніть правою кнопкою миші клітинку на аркуші Domains, Words або Terms, щоб відкрити меню сітки. Клітинка поза виділенням спершу стає виділенням.
Клацання правою кнопкою миші під останнім рядком або праворуч від останнього стовпця відкриває меню для поточного виділення, тож на порожньому аркуші воно відкривається будь-де під заголовками. Клавіша меню або Shift + F10 відкриває його для активної клітинки.

  • Пункти Insert 1 row above, Insert 1 row below і Delete 1 row, у кожному з яких указано кількість рядків, які охоплює виділення, як-от Insert 3 rows above, а праворуч показано клавішу, — див. додавання й видалення рядків.
  • Пункти Sort by <column>, ascending і Sort by <column>, descending, які називають стовпець, на якому ви клацнули правою кнопкою миші, як-от Sort by Word, ascending, — див. сортування. Якщо клацнути праворуч від останнього стовпця, їх немає.
  • Пункти Import CSV і Export CSV, які роблять те саме, що й кнопки на панелі, — див. імпорт і експорт CSV.

Коли не показано жодного рядка — на порожньому аркуші або під час пошуку без збігів, — у меню є лише Insert 1 row below, Import CSV і Export CSV.
На аркуші Checks і в редакторі в режимі лише для читання натомість відкривається власне меню браузера, і так само під час клацання правою кнопкою миші на заголовку чи смузі прокручування.
Меню закривається після вибору пункту, клавішею Escape, натисканням деінде на вкладці, коли змінюється виділення чи аркуш, а також коли змінюються рядки аркуша — вашою зміною чи зміною співавтора.

Сортування​

Пункти Sort by <column>, ascending і Sort by <column>, descending змінюють порядок самих рядків аркуша, а не лише їхній показ. Новий порядок зберігається у файлі, його бачать співавтори й враховує Export CSV, а одна відміна повертає старий порядок.
Рядки порівнюються за текстом, який показує клітинка, значення Domain терміна — за назвою домену, в алфавітному порядку мови інтерфейсу, а числа порівнюються за значенням, тож 2 стоїть перед 10. Порожні клітинки в обох напрямках опиняються в кінці, а рядки, що порівнюються як рівні, зберігають свій порядок. Сортування аркуша, який уже має такий порядок, нічого не записує.
Пошук залишається таким, як був, і так само виділення, клітинки якого тепер містять інші рядки.

Імпорт і експорт CSV​

Кожен з аркушів Domains, Words і Terms імпортується з CSV-файлу й експортується в нього. Ці файли належать лише вкладці словника: пункти Import і Export контекстного меню полотна їх не читають і не записують — див. імпорт і експорт файлів.

Імпорт​

Кнопка Import CSV на панелі або пункт меню сітки відкриває власне вікно браузера для вибору файлів .csv, а не діалогове вікно імпорту хоста. Повторний вибір того самого файлу імпортує його знову.
Файл потрапляє до словника, який називає його рядок заголовків, незалежно від показаного аркуша, а потім вкладка показує цей аркуш і передає фокус клавіатури його сітці. Аркуш зберігає свій пошук, виділення й прокручування, тож рядки, які ховає пошук, або рядки, додані нижче видимої області, залишаються поза полем зору.
Файл читається як UTF-8, з міткою порядку байтів (BOM) або без неї, або як EUC-KR, якщо він не є коректним UTF-8, що буває зі старішими файлами стандарту публічних даних.

Відкриття вкладки словника з панелі інструментів, а потім імпорт доменів, слів і термінів за допомогою Import CSV, причому кожен файл перемикає вкладку на свій аркуш і повідомляє, що він додав

Як додаються рядки:

  • Кожен рядок із назвою оновлює рядок аркуша з такою самою назвою в тих полях, для яких у файлі є стовпці. Поля, для яких у файлі немає стовпців, залишаються без змін. Назви порівнюються без пробілів на початку й у кінці, з урахуванням регістру літер.
  • Назви, яких немає на аркуші, додаються після його останнього рядка в порядку файлу.
  • Імпорт ніколи не видаляє рядків.
  • Рядок із порожньою назвою пропускається. Коли файл містить назву двічі, перевагу має пізніший рядок, а раніший вважається пропущеним. Порожні рядки файлу не вважаються рядками даних.
  • Домен терміна шукається за назвою — це перший домен із такою назвою, — а назва, якої не має жоден домен, залишає термін неприв’язаним, тож спершу імпортуйте домени.

Один імпорт є одним кроком відміни цього аркуша.
Потім сповіщення показує, наприклад, 1 added · 1 updated · 2 skipped. Рядок, що не відрізняється від рядка аркуша, не вважається ні доданим, ні оновленим, тож повторний імпорт того самого файлу нічого не змінює й не записує кроку.
Поки терміни файлу називають домени, яких немає в діаграмі, у другому рядку сповіщення вказано перші три з них, як-от 4 unknown domains: 연월일, 금액, 번호.
Файл, рядок заголовків якого не відповідає жодній структурі або відповідає двом, нічого не імпортує, і з’являється сповіщення про помилку Couldn't read this file as words, terms or domains.

Структури файлів​

Кожен словник читає дві структури. Перша — власна структура редактора, яку записує Export CSV, з назвами полів у рядку заголовків:

СловникРядок заголовківОбов’язкові стовпці
Wordsname,abbreviation,englishName,description,synonyms,forbiddenWordsname, abbreviation
Termsname,physicalName,domain,description,synonymsname, physicalName
Domainsname,category,dataType,descriptionname, dataType

Стовпці можуть іти в будь-якому порядку, стовпець domain терміна містить назву домену, а будь-який інший стовпець ігнорується. У рядку заголовків регістр літер має значення, а клітинки читаються точно так, як записані, разом із пробілами.

Друга — структура файлів корейського стандарту публічних даних (공통표준):

СловникОбов’язкові стовпціТакож читаються
Words공통표준단어명공통표준단어영문약어명 (скорочення), 공통표준단어 영문명 (англійська назва), 공통표준단어 설명 (опис), 이음동의어 목록 (синоніми), 금칙어 목록 (заборонені слова)
Terms공통표준용어명공통표준용어영문약어명 (фізична назва), 공통표준도메인명 (домен, за назвою), 공통표준용어설명 (опис), 용어 이음동의어 목록 (синоніми)
Domains공통표준도메인명, 데이터타입공통표준도메인분류명 (категорія), 공통표준도메인설명 (опис), 데이터길이, 데이터소수점길이

Стовпці 데이터타입, 데이터길이 і 데이터소수점길이 домену об’єднуються в один тип даних: NUMERIC(15,2), CHAR(8), сам тип там, де немає довжини, як-от DATE, а масштаб 0 не записується, як у NUMERIC(15).
У цих файлах у клітинках відкидаються пробіли на початку й у кінці, а інші стовпці, як-от історія редакцій, ігноруються.
В обох структурах пробіли в назві стовпця в рядку заголовків не мають значення.

Експорт​

Кнопка Export CSV на панелі або пункт меню сітки зберігає показаний аркуш у власній структурі редактора: кожен рядок у порядку аркуша, незалежно від того, що показує пошук, а домен терміна записується за назвою або залишається порожнім для видаленого домену.
Файл має кодування UTF-8 з міткою порядку байтів (BOM) і закінчення рядків CRLF, а в лапки береться лише поле, що містить лапку, кому чи розрив рядка. Він відкривається в електронній таблиці й імпортується назад у ті самі рядки.
Файл отримує назву <database name>-<timestamp>-words.csv, -terms.csv або -domains.csv і зберігається так само, як інші експорти редактора, — див. експорт.

Аркуш Checks не експортується, а редактор у режимі лише для читання не пропонує ні імпорту, ні експорту.

Відміна й повторення​

Кожен з аркушів Domains, Words і Terms має власну історію змін, окрему від історії діаграми. На цій вкладці Ctrl + Z і Ctrl + Shift + Z (Windows/Linux) або ⌘ + Z і ⌘ + Shift + Z (Mac), а також кнопки Undo і Redo на панелі інструментів діють на показаний аркуш, і кнопки Time Travel на панелі інструментів немає. На аркуші Checks вони нічого не роблять.
Відміна на вкладці ERD ніколи не відміняє зміну аркуша — див. аркуші словника.

Клавіші на вкладці​

Поки фокус клавіатури на вкладці, діють такі сполучення клавіш редактора — див. сполучення клавіш:

Поки відкрито редагування клітинки, зокрема список доменів терміна, Search і Toggle Explorer нічого не роблять, тож введений текст не втрачається.

Усі інші сполучення клавіш редактора залишаються на вкладці й ніколи не доходять до полотна: Alt + N (Windows/Linux) або ⌥ + N (Mac) не додає таблицю, а Delete і Backspace нічого не видаляють на полотні.
Натомість на аркуш діють власні клавіші сітки: Enter відкриває клітинку для редагування, Delete і Backspace очищають виділені клітинки, Ctrl + A (Windows/Linux) або ⌘ + A (Mac) виділяє всі клітинки, а Escape скасовує редагування, закриває меню сітки або очищає поле пошуку. Копіювання, вирізання й вставлення також залишаються на вкладці — див. копіювання й вставлення.

Режим лише для читання​

У редакторі з атрибутом readonly вкладка відкривається й показує кожен аркуш.
Перемикання аркушів, пошук, виділення, прокручування, зміна ширини стовпців і копіювання працюють як зазвичай, і так само перехід до об’єкта перевірки з аркуша Checks клавішею Enter або подвійним клацанням. Позначки перевірок теж видно.

Жодна клітинка не приймає редагування, вставлення чи очищення, і кожну клітинку, якої не позначає перевірка, показано на сірому тлі клітинок лише для читання.
Кнопки Add Row, Delete Rows, Import CSV і Export CSV сховано, клавіші рядків нічого не роблять, а клацання правою кнопкою миші відкриває меню браузера. Порожній аркуш не показує підказки, а кнопок Undo і Redo на панелі інструментів немає.

Співавтори й файл​

Файл діаграми містить слова, терміни й домени в порядку їхніх аркушів, зокрема й після сортування, і не містить рядків без жодного значення.
Він також містить логічну назву кожної таблиці й кожного стовпця, те, чи формують кожну фізичну назву словники, і прив’язку кожного стовпця до домену, поки цей домен є в списку доменів. Перевірки й позначки обчислюються з цих даних і ніколи не зберігаються.

У сеансі спільного редагування редактори бачать зміни словника один одного, щойно вони надходять, зокрема сортування й вставлення рядків. Кожен зберігає власний аркуш, пошук і виділення, а його історії аркушів містять лише його власні зміни.
Зміна чи вставлення з буфера обміну в рядок, який тим часом видалив співавтор, нічого не зберігає, і з’являється сповіщення Nothing saved: the row was removed.
Редактор випуску, у якому ще не було вкладки словника, зберігає діаграму без її логічних назв, прив’язок до доменів і словників — див. змішані випуски.

Пункт Import для схеми SQL, GraphQL, DBML чи AML зберігає словники, пункт Import для JSON замінює їх словниками з файлу, а Import and Add словників не приносить — див. імпорт зовнішніх файлів.
Агент для програмування редагує слова, терміни й домени, задає логічні назви й домени, повторно формує фізичні назви й отримує список перевірок через MCP-сервер — див. словники і перевірки словника. Інструменту для CSV-файлів він не має.