розробка українських вчителів
онлайновому середовищі керування базами даних dat.A є можливість перегляду структури бази даних під час створення запитів - для цього просто натисніть кнопку, яка з'являється у нижньому правому куті вікна програми.
імпорт таблиць безпосередньо з табличного процесора(Excel, Таблиці Google, LibreOffice Calc, WPS Spreadsheet) через Ctrl+C/Ctrl+V, тож був змушений це зробити.
Можливість імпорту таблиць з'являється якщо є активна база даних - у меню Таблиці з'являється пункт Імпорт таблиці.
У імпортованій таблиці першим рядком мають бути назви майбутніх полів!!!!!
Виділяємо таблицю, натискуємо Ctrl+C
Переходимо до вікна засобу імпорту, натискуємо Ctrl+V - у вікні має з'явитися імпортована таблиця.
Якщо все гаразд - натискуємо "Імпорт"
Появляється вікно підтвердження імпорту - у ньому можна обрати назву таблиці. Структура таблиці генерується автоматично. Первинний ключ - поле "ID". Структуру та назву можна згодом змінити
Натискуємо "Зберегти" і у нас є готова таблиця, яку можна змінювати, використовувати у зв'язках з іншими тощо.
визначення "типу зв'язку" в онлайновому середовищі керування базами даних dat.A
У Access ви бачите готовий "тип зв’язку" (one-to-many, one-to-one, many-to-many) як частину графічного конструктора БД, але у більшості SQL-СУБД таких "типів" прямо немає — вони реалізуються через структуру таблиць і зовнішні ключі (FOREIGN KEY).
Наведу приклади, щоб було розуміння.
1. Один-до-багатьох (One-to-Many)
Класичний випадок: один клас має багато учнів.
ТАБЛИЦЯ Class (
class_id INTEGER ПЕРВИННИЙ_КЛЮЧ,
name TEXT
);
ТАБЛИЦЯ Student (
student_id INTEGER ПЕРВИННИЙ_КЛЮЧ,
name TEXT,
class_id INTEGER,
ЗОВНІШНІЙ_КЛЮЧ (class_id)→Class(class_id)
);
В Class кожен запис — унікальний клас.
У Student багато рядків можуть посилатися на один і той самий class_id.
Це і є "один до багатьох".
2. Один-до-одного (One-to-One)
Робиться так само, але в полі зовнішнього ключа додається обмеження UNIQUE.
ТАБЛИЦЯ Person (
person_id INTEGER ПЕРВИННИЙ_КЛЮЧ,
name TEXT
);
ТАБЛИЦЯ Passport (
passport_id INTEGER ПЕРВИННИЙ_КЛЮЧ,
number TEXT UNIQUE,
person_id INTEGER UNIQUE,
ЗОВНІШНІЙ_КЛЮЧ (person_id)→Person(person_id)
);
Кожна людина має максимум один паспорт, і кожен паспорт належить рівно одній людині.
3. Багато-до-багатьох (Many-to-Many)
Тут потрібна проміжна таблиця.
Приклад: учні можуть відвідувати багато гуртків, а гуртки мають багато учнів.
ТАБЛИЦЯ Student (
student_id INTEGER ПЕРВИННИЙ_КЛЮЧ,
name TEXT
);
ТАБЛИЦЯ Club (
club_id INTEGER ПЕРВИННИЙ_КЛЮЧ,
title TEXT
);
ТАБЛИЦЯ StudentClub (
student_id INTEGER,
club_id INTEGER,
ПЕРВИННИЙ_КЛЮЧ (student_id, club_id),
ЗОВНІШНІЙ_КЛЮЧ (student_id)→Student(student_id),
ЗОВНІШНІЙ_КЛЮЧ (club_id)→Club(club_id)
);
Таблиця StudentClub зберігає пари (учень гурток).
Це і є реалізація "багато-до багатьох" ("many-to-many").
У Access все реалізується не так. як "в людей" - ви обираєте тип зв’язку в "конструкторі зв’язків", а в SQL-базах даних ви визначаєте зв'язки, описуючи структуру таблиць і зовнішні ключі - тип зв’язку визначається автоматично залежно від того, чи дозволяє поле FOREIGN KEY мати багато значень, чи має UNIQUE, чи є проміжна таблиця.
І головне - на сьогодні UNIQUE у конструкторі структури таблиць dat.A не реалізовано, тобто всі зв'язки типу "один до багатьох" або "багато до багатьох"
онлайнового застосунку для роботи з базами даних dat.A.
Це навчальний застосунок, а не повноцінний засіб роботи з базами даних (хоча якщо хтось захоче може використати його код для чогось більшого).
Воно може створювати та редагувати структури таблиць, додавати дані в таблиці та редагувати їх, створювати запити за допомогою конструктора та "вручну", створювати та переглядати(і друкувати звіти), створювати форми, є простий візуальний конструктор зв'язків.
"Алгоритм" роботи схожий на роботу в MS Access та LibreOffice Base, все максимально спрощено, але без порушення основних концепцій, тобто спрямовано на розуміння.
Це ще "сирий" продукт, тож сподіваюсь почути ваші відгуки, зауваження та пропозиції.
У візуальному конструкторі зв'язків - щоб з'єднати два поля у різних таблицях потрібно клацнути вказівником миші по одному, а потім по другому - виникне з'єднання, щоб вилучити - подвійний клацок на будь-якому полі на кінцях з'єднання. Правильність з'єднання у конструкторі не перевіряється - у випадку неправильного з'єднання отримаєте помилку виконання запиту.
У якості джерел даних для полів конструктора звітів та конструктора форм можна використовувати не тільки таблиці бази даних, а й результати виконання запитів.
Всі створені вами бази даних та їх компоненти (запити, звіти, форми) зберігаються у внутрішньому сховищі браузера
Інтерфейс для телефону ще не оптимізовано, але планується.
Назва вимовляється як /ˈdeɪ.tə/ (дейтА)
Хочете спробувати? Тоді вам сюди: https://ed-info.github.io/dat.a
Повноцінний "десктоп" застосунок dat.A.
Створено з використанням Node.js та Electron.
Як на мене, JavaScript+Node.js є найперспективнішим у програмуванні, адже це як вебзастосунки, так і "десктопні", причому кросплатформні(для різних операційних систем)
HTML+CSS дозволяє створювати графічний інтерфейс будь-якої складності.