powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / EAV - это выворачивание реляционной модели наизнанку.
25 сообщений из 136, страница 4 из 6
EAV - это выворачивание реляционной модели наизнанку.
    #37516961
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene 2 locky
я написал
U-geneв накладной есть множество строк , которые уникально идентифицируются (внутри накладной) своим артикулом. объясняю. Есть накладная. У нее ест заголовок (дата, число) и строки, где перечисляется какого товара (это артикул) сколько отпущено (это кол-во). Строки уникальны по полю артикул - в одной накладной не может ыбть несколко строк с одним артикулом. Такое вот описалово

Вы почему то прочитали
lockyмножество накладных, каждая из которых уникально идентифицируются Вы разницу чувствуете?
Я этому удивился.

Мой вопрос - как такую накладную, как я описал, в ЕAV представить? Вы можете нормально ответить?
Нифига не чувствую разницу.
Есть множество строк накладных, которые уникально идентифицируются внутри подмножеств, полученных путём "секционирования" по документам.
Есть множество накладных, которые уникально идентифицируются внутри подможеств, полученных (скажем) путём секционирования по периодам/складам/поставщикам/чему так еще.

собственно, по вопросу: добавить аттрибут "артикул" и наложить на него ограничение уникальности. К сожалению, мне неизвестен иной способ наложения уникальности в такой структуре кроме как ограничение, обеспечиваемое слоем доступа к данным.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37516965
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene Я в упор не вижу как в EAV-схеме (OID, имя атрибута, значение атрибута) этот случай отобразить. В лоб.
Для накладной 21
первая строка
имя атрибута - "артикул" - значение 1
имя атрибута - "идентификатор шапки" - значение 21
следующая строка накладной
имя атрибута - "артикул" - значение 2
имя атрибута - "идентификатор шапки" - значение 21

EAV он как бы не отказывается совсем от реляционной модели. Он ее хитро реализует.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37516966
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257U-gene Я в упор не вижу как в EAV-схеме (OID, имя атрибута, значение атрибута) этот случай отобразить. В лоб.
Для накладной 21
первая строка
имя атрибута - "артикул" - значение 1
имя атрибута - "идентификатор шапки" - значение 21
следующая строка накладной
имя атрибута - "артикул" - значение 2
имя атрибута - "идентификатор шапки" - значение 21

EAV он как бы не отказывается совсем от реляционной модели. Он ее хитро реализует.
Не настолько и хитро, если посмотреть.
Очень-очень-очень похоже на, скажем, строение страниц данных в том же скуле (да и во многих других серверах) :)
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37516971
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подождите-подождите.

То есть я прямо в имя атрибута записываю номер строки?

Но у меня номеров строки нет. Откуда я их возьму? У меня стоки уникальны по артикулу. А номеров у строк нету. Какие то левые данные.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37516973
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 SERG1257

кстати, не вижу в вашей схеме количеств
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37516977
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-geneПодождите-подождите.

То есть я прямо в имя атрибута записываю номер строки?

Но у меня номеров строки нет. Откуда я их возьму? У меня стоки уникальны по артикулу. А номеров у строк нету. Какие то левые данные.

эээээ... а вы точно понимаете что есть EAV?
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37516978
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene2 SERG1257

кстати, не вижу в вашей схеме количеств
я в показанном абстрактном примере еще много чего не вижу из того, что встречается в реальных системах
но на то он и пример
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37516982
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 locky
куда добавить атрибут артикул? бебят, я написал простой вопрос. столько эмоций! хотя можно 3 мин потратить и аккуратно изобразить.

Есть такая накладная

Код: plaintext
1.
2.
3.
4.
5.
6.
номер 21
дата 01.01.11

Art  Qty
----------
a1   12
a2   5

Как она будет представлена в EAV? Мне правда интересно,ну вдруг я что не догоняю?
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37516987
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene 2 locky
куда добавить атрибут артикул? бебят, я написал простой вопрос. столько эмоций! хотя можно 3 мин потратить и аккуратно изобразить.

Есть такая накладная

Код: plaintext
1.
2.
3.
4.
5.
6.
номер 21
дата 01.01.11

Art  Qty
----------
a1   12
a2   5

Как она будет представлена в EAV? Мне правда интересно,ну вдруг я что не догоняю?

Вы всё-таки прочитайте про EAV для начала. А потом уже и поговорим более детально на предмет всяких факапов, которые встречаются в реальной жизни/практике и кто как их обходит.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517002
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый, я прочитал про EAV. Там, где я прочитал, обычно в качестве примера сохраняемого класса берут структуру, напоминающую кортеж, а с этим как раз все понятно.

Везде,где я прочитал, предполагается, что для хранения данных используется EAV-каноническая структура таблицы (OID, имя атрибута, значение атрибута). Как в ней хранить кортежоподобные структуры, мне совершенно понятно.Понятно так же что EAV может быть очень неплох в некоторых случаях, когда речь идет о добавлении новых полей именно к такой кортежеподобной структуре.

Но я задал вопрос структуры, содержащей множество. Привел пример такой структуры и попросил продемонстрировать, как такую структуру можно сохранить в EAV-системе. Я, честно, надеюсь, что мне здесь смогут помочь. Это ведь простой вопрос?
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517005
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-geneУважаемый, я прочитал про EAV. Там, где я прочитал, обычно в качестве примера сохраняемого класса берут структуру, напоминающую кортеж, а с этим как раз все понятно.

Везде,где я прочитал, предполагается, что для хранения данных используется EAV-каноническая структура таблицы (OID, имя атрибута, значение атрибута). Как в ней хранить кортежоподобные структуры, мне совершенно понятно.Понятно так же что EAV может быть очень неплох в некоторых случаях, когда речь идет о добавлении новых полей именно к такой кортежеподобной структуре.

Но я задал вопрос структуры, содержащей множество. Привел пример такой структуры и попросил продемонстрировать, как такую структуру можно сохранить в EAV-системе. Я, честно, надеюсь, что мне здесь смогут помочь. Это ведь простой вопрос?
Не сомневаюсь, что вы прочитали. Поняли или не поняли - это, так сказать, другой вопрос.

Давайте начнем с простого, ок?

Вы можете представить себе список накладных в виде EAV?
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517011
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene,

ну не прочитал ты нифига
а то не задавал бы детские вопросы
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517026
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 U-gene

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
insert into entity ('накладная') -- сгенерен id=1
insert into entity ('строка накладной') -- сгенерен id=2

insert into attribute ( 1 ,'номер') -- сгенерен id=1
insert into attribute ( 1 ,'дата') -- сгенерен id=2
insert into attribute ( 2 ,'номер накладной в строке') -- сгенерен id=3
insert into attribute ( 2 ,'Art') -- сгенерен id=4
insert into attribute ( 2 ,'Qty') -- сгенерен id=5

-- шапка
insert into value (attribute_id,value) values ( 1 ,'21') 
insert into value (attribute_id,value) values ( 2 ,'01.01.11') 
-- первая строка
insert into value (attribute_id,value) values ( 3 ,'21') 
insert into value (attribute_id,value) values ( 4 ,'a1') 
insert into value (attribute_id,value) values ( 5 ,'12') 
-- вторая строка
insert into value (attribute_id,value) values ( 3 ,'21') 
insert into value (attribute_id,value) values ( 4 ,'a2') 
insert into value (attribute_id,value) values ( 5 ,'5') 
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517028
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 locky
Хорошо, значит не понял.

Господа, но я просто прошу изобразить как в EAV будет храниться такая накладная. У меня мозги так устроены -я лучше понимаю, когда дают конкретные примеры. Если Вы действительно хотите помочь мне разобраться, ну покажите же мне пожалуйста , как в EAV правильно зранить данные о такой накладной. буду ваш пример анализировать и задавать вопросы, если они появятся.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
номер 21
дата 01.01.11

Art  Qty
----------
a1   12
a2   5
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517029
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene2 locky
Хорошо, значит не понял.

Господа, но я просто прошу изобразить как в EAV будет храниться такая накладная. У меня мозги так устроены -я лучше понимаю, когда дают конкретные примеры. Если Вы действительно хотите помочь мне разобраться, ну покажите же мне пожалуйста , как в EAV правильно зранить данные о такой накладной. буду ваш пример анализировать и задавать вопросы, если они появятся.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
номер 21
дата 01.01.11

Art  Qty
----------
a1   12
a2   5

прежде чем переходить к сложному - надо бы освоить простое. А затем уже, постепенно....
Впрочем, вам уже дали пример.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517030
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2SERG1257 спасибо
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517060
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 ехидный коммент :)

обидно вообще то. люди старались, выдумывали bigint'ы и vchar'ы а тут бац - все в строку.

2 серьезный коммент
вот этот кусок
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
-- первая строка
insert into value (attribute_id,value) values ( 3 ,'21') 
insert into value (attribute_id,value) values ( 4 ,'a1') 
insert into value (attribute_id,value) values ( 5 ,'12') 
-- вторая строка
insert into value (attribute_id,value) values ( 3 ,'21') 
insert into value (attribute_id,value) values ( 4 ,'a2') 
insert into value (attribute_id,value) values ( 5 ,'5')

где здесь сохранено, что артикулу a1 соответствует кол-во 5 (а не 12)?

например, поменяю я меняю последовательность строк

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
-- первая строка
insert into value (attribute_id,value) values ( 3 ,'21') 
insert into value (attribute_id,value) values ( 4 ,'a1') 
insert into value (attribute_id,value) values ( 5 ,'5') -- здесь было 12 
-- вторая строка
insert into value (attribute_id,value) values ( 3 ,'21') 
insert into value (attribute_id,value) values ( 4 ,'a2') 
insert into value (attribute_id,value) values ( 5 ,'12') -- здесь было 5

результат тот же самый.

Где же сохраняется информация об отношении артикулов и количеств?

Это момент я не понял.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517068
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene1 ехидный коммент :)

обидно вообще то. люди старались, выдумывали bigint'ы и vchar'ы а тут бац - все в строку.

Хм... а вы точно таки читали всякую там теорию (да и всё что написано на скуль. ру)? Потому как это всё-таки пример, а не реальная структура

U-gene2 серьезный коммент
вот этот кусок
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
-- первая строка
insert into value (attribute_id,value) values ( 3 ,'21') 
insert into value (attribute_id,value) values ( 4 ,'a1') 
insert into value (attribute_id,value) values ( 5 ,'12') 
-- вторая строка
insert into value (attribute_id,value) values ( 3 ,'21') 
insert into value (attribute_id,value) values ( 4 ,'a2') 
insert into value (attribute_id,value) values ( 5 ,'5')

где здесь сохранено, что артикулу a1 соответствует кол-во 5 (а не 12)?

например, поменяю я меняю последовательность строк

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
-- первая строка
insert into value (attribute_id,value) values ( 3 ,'21') 
insert into value (attribute_id,value) values ( 4 ,'a1') 
insert into value (attribute_id,value) values ( 5 ,'5') -- здесь было 12 
-- вторая строка
insert into value (attribute_id,value) values ( 3 ,'21') 
insert into value (attribute_id,value) values ( 4 ,'a2') 
insert into value (attribute_id,value) values ( 5 ,'12') -- здесь было 5

результат тот же самый.

Где же сохраняется информация об отношении артикулов и количеств?

Это момент я не понял.
пропущен аттрибут "идентификатор строки".
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517112
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой идентификатор строки?
у меня нет такого атрибута.
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517120
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene,

на, примерная схема
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517122
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-geneкакой идентификатор строки?
у меня нет такого атрибута.
Ну, у вас там и идентификатора документа, вообще-то, не наблюдается...
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517149
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2locky
Строка уникальна артикулом.
накладная уникальна номером.
Отдельных специальных идентификаторов нет.
C заголовком накладной понятно - так как раз кортежная структура. Вопросов нет - значнение номер накладной одноханчно соотносится со всеми остальными скалярами, составляющий этот кортеж.

А вот со строками непонятно. Во всяком случае ответ Ну, у вас там и идентификатора документа, вообще-то, не наблюдается... на него не отвечает

автор2ViPRos
опана

Долго курил схему.
мне кажется - две таблицы (заголовок и строки) немного проще.

Хорошо, здесь мой ехидный комментарий о многообразии типов слегка снимается. Какое то разнообразие типов наблидается (хотя теперь возникает вопрос, что же делать, ежели в программе у какого-то существующего свойства вдруг потребовалось поменяем тип "целое" на тип "число")

Но серьезный коммент остается полностью в силе. Как в этих таблицах "ОбъектСвойство..." сохраняется информация об отношениях? Например, в моем примере артикулу а1 соответствует кол-во 5, а не 12. Я, правда, вижу еще какое то поле "Системный", но что за данные в нем хранятся?
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517166
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene,

блин сооьбщнгие пропало
еще раз

Любой объект имеет собственный идентификатор - ОбъектИД
Любое свойство (значение - множество) имеет собственный идентификатор - СвойствоИД
Пишется так
ОбъектИД, СвойствоИД, ЗначениеСвойства
Свойство може быть и Объект (ууууооочень сложный)
тогда
ОбъектИД, ОбъектИД, СсылкаНаОбъект (ну для понимания переименовал, а так все пишется как выше указна)

На основе этого -
можно в лоб использовать хранилище как ЕАВ
создать вьшки
создать персистентные таблицы

зависит от требований к производительности
в ВИПРОС все 3 реализованы и выбирается галочкой
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517172
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
между методами и структурами есть контракт
1. если метод пользуется определенным срезоммоели и явно указано, что методу свойство такое то нужна как определенный тип, то проваййдер генерирует(преобразовывает) нужный тип при возможноси
2. при изменении модели верифицируются все контракты, если преобразования невозможны то в зависимости от привилегий метода либо изменения модели не допуска.тся либо метод метиться как не исполнимый
вот и все
...
Рейтинг: 0 / 0
EAV - это выворачивание реляционной модели наизнанку.
    #37517176
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поле системный - для других целей
несистемный означет, что это свойство не типизирована (т.е. пользовательскон нетипизированное динамическое расширение объекта)
...
Рейтинг: 0 / 0
25 сообщений из 136, страница 4 из 6
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / EAV - это выворачивание реляционной модели наизнанку.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]