Как создать структуру мета модели в sql?
Сегодня хочу немного рассказать о мета модели в SQL. Впервые я услышал о таком способе построения таблиц от своего куратора, проходя курс обучения Java в компании NetCracker.Сначала это показалось чем то невероятно сложным и не понятным. Была поставлена задача использовать ее в нашем учебном проекте.По приходу домой, я начал усердно мучить гугл в поисках информации по данной теме.Но информации оказалось не так и много. Поэтому я решил написать об этом здесь. Это будет первая статья в моем блоге. Ладно хватит воды, перейдем к делу :)
Часто ли Вам приходилось использовать много разных сущностей в базе, для которых приходилось создавать свои таблицы? Товары, пользователи, сделки, контрагенты и т.д..
В итоге в более менее объемном проекте у нас появляется 100500 таблиц.
Преимущество мета модели в том что у нас всегда фиксированное количество таблиц.
И нам не нужно добавлять новую таблицу каждый раз когда у нас появляется новая сущность.
Какие таблицы нужно создать, что бы построить мета модель в SQL ?
Нам понадобится всего 4 таблицы.
- TYPES (здесь будут все наши типы)
- ATTRIBUTES (сюда мы поместим все атрибуты каждого типа)
- OBJECT_INSTANCE (тут будут экземпляры конкретного типа)
- PARAMETERS (здесь будут значения каждого атрибута для каждого экземпляра)
Если Вам не понятно что к чему, не переживайте, сейчас я разложу все по полочкам.
Таблица TYPES:
Предназначение этой таблицы указать сущности которые будут использованы в нашей БД.
Создаем нашу таблицу:
CREATE TABLE TYPES (
CREATE TABLE TYPES (
id INT PRIMARY KEY,
name VARCHAR2(30)
);
Таблица ATTRIBUTES:
Тут будут лежать все атрибуты типов. Например у типа User есть атрибуты name, last, name, age ... Их место именно в этой таблице.
CREATE TABLE ATTRIBUTES (
id INT PRIMARY KEY,
object_Type_id NOT NULL,
name VARCHAR2(30),
FOREIGN KEY (object_Type_id) REFERENCES TYPES(id)
);
Таблица OBJECT_INSTANCE:
Когда нам нужно будет создать объект мы должны создать новую запись в этой таблице.
На примере когда создаем User user = new User() мы должны поместить новый экземпляр в эту таблицу.
Создаем:
CREATE TABLE OBJECT_INSTANCE (
id INT PRIMARY KEY ,
object_Type_id NOT NULL,
FOREIGN KEY (object_Type_id) REFERENCES TYPES(id)
);
Мы уже близко к успеху, последняя таблица PARAMETERS
Здесь будут указаны значения атрибутов для конкретного экземпляра. Имя, фамилия, возраст юзера - всему этому добру место в этой табличке.
CREATE TABLE PARAMETERS (
id SMALLINT PRIMARY KEY ,
object_Instance_id NOT NULL,
attribute_id NOT NULL,
value VARCHAR2(70),
FOREIGN KEY (object_instance_id) REFERENCES OBJECT_INSTANCE (id),
FOREIGN KEY (attribute_id) REFERENCES ATTRIBUTES (id)
);
);
На этом все, основа заложена. Мета модель создана. О том как добавить данные читайте в следующем выпуске.


Комментариев нет:
Отправить комментарий