powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение списка объектов с полями, заданными пользователями и условий их выбор
87 сообщений из 87, показаны все 4 страниц
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36851884
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Нужно реализовать хранение следующих объектов.
Список пользователей (контейнер для хранения пользователей). Список пользователей должен содержать список определенных пользователем полей для объектов пользователь, которые хранятся в данном списке.

Пользователи, пользователь принадлежит одному и только одному списку, имеет как постоянные поля,
например, email, так и значения полей определенных пользователем (которые сопоставлены списку, которым принадлежит пользователь).

Сегмент пользователей определенного списка пользователей, который представляет собой набор условий вида:
Объедниение условий: все, хотя бы одно из условий.
"Значение поля пользователя" Оператор "Значение".

Например, для списка пользователя List1 добавили дополнительное поле, Age.
Так, что сегмент для пользователей данного списка может быть
Age Больше 20.

Для реализвации данной схемы можно использовать наборы связанных таблиц. Но для выполнения проверок в этом случае придется часто в запросах объединять много таблиц.

А можно я полагаю использовать другой подход: хранить список определенных пользователей полей для списка как строковое поле (преобразованный объект или массив в строку).
А такблице пользователей хранить набор условий как строку.

Как вы думает имеет ли смысл хранить ненормализованные данные и использовать второй подход?
Кто-нибудь реализовывал такой вариант? Использую MYSQL и PHP.


Спасибо.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36852157
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос вспылывающий раза два в неделю. Ищите в данном форуме по слову EAV
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36852186
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShtockВопрос вспылывающий раза два в неделю. Ищите в данном форуме по слову EAV

Я уже смотрел http://www.sql.ru/forum/actualthread.aspx?tid=777825 и http://en.wikipedia.org/wiki/Entity-attribute-value_model.
Вопрос остался имеет ли смысл в данном случае испоользовать для хранения строки или множество связанных таблиц?
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36852201
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShtockВопрос вспылывающий раза два в неделю. Ищите в данном форуме по слову EAV

Если бы не нужно было хранить данные для сегментации я бы без сомнения выбрал вариант со связанными таблицами. Но при наличии условия для сегментаций проверка на того, удовлетворяет ли пользватель данным условиям или нет потребует объединять данные из многих таблиц.

Если хранить как строки, мне представляется усложняется редактировани данных.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36853257
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вы думаете имеет ли смысл хранить иногда сложные струтуры данных (объекты массивы) просто в виде строки, а уже разбирать их в программе?
Я понимаю, что с точки зрения проектирования БД - это ересь, это нарушение первой нромальной формы, но тем не менее, кто-нибудь хранил когда-нибудь неатомарные данные в виде строки.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36853276
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Как вы думаете имеет ли смысл хранить иногда сложные струтуры данных (объекты массивы) просто в виде строки, а уже разбирать их в программе?
Я понимаю, что с точки зрения проектирования БД - это ересь, это нарушение первой нромальной формы, но тем не менее, кто-нибудь хранил когда-нибудь неатомарные данные в виде строки.
Я храню, но мне при этом не нужна ни фильтрация, ни сортировка по этим полям. Т.е. в бизнес-логике они никогда не используются разрозненно. Лишь вводятся в отдельных полях и выводятся в отдельные столбцы.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36853368
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКак вы думаете имеет ли смысл хранить иногда сложные струтуры данных (объекты массивы) просто в виде строкиТогда уж как XML
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36854042
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257авторКак вы думаете имеет ли смысл хранить иногда сложные струтуры данных (объекты массивы) просто в виде строкиТогда уж как XML

Думаю можно и в XML. Просто интересно, храните ли вы неатомарные данные или этого не стоит делать ни при каких обстоятельствах.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36854044
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonOLEG_2005Как вы думаете имеет ли смысл хранить иногда сложные струтуры данных (объекты массивы) просто в виде строки, а уже разбирать их в программе?
Я понимаю, что с точки зрения проектирования БД - это ересь, это нарушение первой нромальной формы, но тем не менее, кто-нибудь хранил когда-нибудь неатомарные данные в виде строки.
Я храню, но мне при этом не нужна ни фильтрация, ни сортировка по этим полям. Т.е. в бизнес-логике они никогда не используются разрозненно. Лишь вводятся в отдельных полях и выводятся в отдельные столбцы.

Я полагаю, что набор полей, который может храниться в строке не будет использоваться обособленно, судя по всем может быть примерно так: получаем строковое поле, а преобразывем в массив и обрабытваем все элементы массива.
При таком подходе видимо несколько усложнится редактирование данных, например, условий.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36854820
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно было бы узнать, какой подход используете для хранения сложных структур в БД, использование много связанных таблиц или хранение в поле в виде строки (может быть в XML) и вопросы целостности данных решать на уровне приложения.
Каким соображениями вы руководствуетесь при выборе?
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36855095
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Просто интересно, храните ли вы неатомарные данные или этого не стоит делать ни при каких обстоятельствах.Ну как минимум нарушение 1-й норм. формы.
Не есть хорошо. Чтоб использовать, нужно иметь очень серьезные аргументы для этого.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36855132
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVOLEG_2005Просто интересно, храните ли вы неатомарные данные или этого не стоит делать ни при каких обстоятельствах.Ну как минимум нарушение 1-й норм. формы.
Не есть хорошо. Чтоб использовать, нужно иметь очень серьезные аргументы для этого.

Меня тоже очень смущает нарушение первой нормальной формы.
Возможная аргументация, которая мне видится сейчас, избежать запросов с объединением 6-7 таблиц, заменяя более простыми запросами, извлечения данных из строковых полей, распаковка в массив и обработка. Имеет ли такой способ право на существование? Насколько данный аргумент кажется убедительным?
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36855156
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Возможная аргументация, которая мне видится сейчас, избежать запросов с объединением 6-7 таблиц, заменяя более простыми запросами, извлечения данных из строковых полей, распаковка в массив и обработка. и вы, конечно, уверены, что парсинг строки, распаковка в массив, и обработка ( где, кстати, это будет происходить? ), будет быстрее, чем запрос с объединением каких-то 6-7 таблиц?
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36855176
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychOLEG_2005Возможная аргументация, которая мне видится сейчас, избежать запросов с объединением 6-7 таблиц, заменяя более простыми запросами, извлечения данных из строковых полей, распаковка в массив и обработка. и вы, конечно, уверены, что парсинг строки, распаковка в массив, и обработка ( где, кстати, это будет происходить? ), будет быстрее, чем запрос с объединением каких-то 6-7 таблиц?

Нет я не уверен, что это быстрее и лучше, поэтому я и задаю это вопрос.
Как в этом случаем могла проиходить обработка: PHP скрипт мог получить строковое поле, проебразовать в массив (дерево XML или что-то в этом роде), пройти по массиву и проверить выполнения каждого условия.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36855191
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych,

Проверки условия будут выполнять достаточно часто, например, решаться такая задача, просмотреть списка пользователей, выбарать пользователей удовлетворяющего опреленным критериям, которые представляют собой набор логических условий вида
Поле Оператор сравения Значение,
где поле - это как поля общение для всех пользователей, так и поля специфичные только для данного списка.
Либо условие, где проверяется входжение пользователя в определенную группу.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36855396
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005egorych,

Проверки условия будут выполнять достаточно часто, например, решаться такая задача, просмотреть списка пользователей, выбарать пользователей удовлетворяющего опреленным критериям, которые представляют собой набор логических условий вида
Поле Оператор сравения Значение,
где поле - это как поля общение для всех пользователей, так и поля специфичные только для данного списка.
Либо условие, где проверяется входжение пользователя в определенную группу.для всего этого предназначен SQL, а не PHP какой-нибудь убогий.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36855409
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychOLEG_2005egorych,

Проверки условия будут выполнять достаточно часто, например, решаться такая задача, просмотреть списка пользователей, выбарать пользователей удовлетворяющего опреленным критериям, которые представляют собой набор логических условий вида
Поле Оператор сравения Значение,
где поле - это как поля общение для всех пользователей, так и поля специфичные только для данного списка.
Либо условие, где проверяется входжение пользователя в определенную группу.для всего этого предназначен SQL, а не PHP какой-нибудь убогий.

То есть вы считаете, что в всегда хранить сложные струтуры в связанных таблицах, а хранение неатомарных данных в виде строки всегда является неправильным подходом?
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36855590
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005То есть вы считаете, что в всегда хранить сложные струтуры в связанных таблицах, а хранение неатомарных данных в виде строки всегда является неправильным подходом?да. И это не я так считаю, это теория построения реляционных баз данных так считает. Если задача в конечном итоге и потребует денормализации, то в любом случае, не такой убогой.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36855618
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychOLEG_2005То есть вы считаете, что в всегда хранить сложные струтуры в связанных таблицах, а хранение неатомарных данных в виде строки всегда является неправильным подходом?да. И это не я так считаю, это теория построения реляционных баз данных так считает. Если задача в конечном итоге и потребует денормализации, то в любом случае, не такой убогой.

Я тоже склоняюсь к тому, чтобы сначала использовать нормализованные данные.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36855643
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychOLEG_2005То есть вы считаете, что в всегда хранить сложные струтуры в связанных таблицах, а хранение неатомарных данных в виде строки всегда является неправильным подходом?да. И это не я так считаю, это теория построения реляционных баз данных так считает. Если задача в конечном итоге и потребует денормализации, то в любом случае, не такой убогой.

С точки зрения проектирования БД согласен, что это ересь.
Но ведь вы не будете отрицать, что иногда в строке хранять неатомарные данные, например, в XML формате? Наверное иногда имеет смысл применять денормализацию.
Но тем не менее, вероятно, стоит сначала использовать нормализованные данные. А потому в случае необходимости прибегать к нормализации в случае необходимости.
Просто меня смутило, что для выполнения простых условий проверки, которые должны выполняться часто, необходимо использовать запрос с объединением большого числа таблиц.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36855747
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005:
>> Но ведь вы не будете отрицать, что иногда в строке хранять неатомарные данные, например, в XML формате?
лично я в XML не верю
>> Наверное иногда имеет смысл применять денормализацию.
это наверняка, но не такую идиотскую. Потому что такая денормализация не несёт в себе никаких положительных черт. Вообще. Чистейшая пессимизация приложения.
>> Просто меня смутило, что для выполнения простых условий проверки, которые должны выполняться часто, необходимо использовать запрос с объединением большого числа таблиц.
люди и по 200-300 таблиц крестят постоянно и ничего, не жужжат, а тут 6-7, да разве это много ))) сделай себе view, в конце концов и проверяй уже по нему.
Вообще говоря, любой SQL-сервер оптимизирован как раз на работу с большим количеством связанных таблиц, именно в возможности быстро обрабатывать данные, хранящиеся в таком виде, основная его прелесть.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36856021
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005LSVOLEG_2005Просто интересно, храните ли вы неатомарные данные или этого не стоит делать ни при каких обстоятельствах.Ну как минимум нарушение 1-й норм. формы.
Не есть хорошо. Чтоб использовать, нужно иметь очень серьезные аргументы для этого.

Меня тоже очень смущает нарушение первой нормальной формы.
Возможная аргументация, которая мне видится сейчас, избежать запросов с объединением 6-7 таблиц, заменяя более простыми запросами, извлечения данных из строковых полей, распаковка в массив и обработка. Имеет ли такой способ право на существование? Насколько данный аргумент кажется убедительным?

создать view на основ 6-7 таблиц и на его основе нужные хранимки и забыть обо всем.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36856106
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005То есть вы считаете, что в всегда хранить сложные струтуры в связанных таблицах, а хранение неатомарных данных в виде строки всегда является неправильным подходом?Я считаю. Неатомарность будет иметь свойство увеличиваться и тогда рухнет производительность.
Рухнет по взрослому.

Неатомарность - зло. Допустима лишь изредка в заведома некритичных точках.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36856983
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю то, что я имел в виду насчёт хранения слабоструктурированных данных в одном поле называется serializedLOB.
http://www.martinfowler.com/eaaCatalog/serializedLOB.html
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36857024
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел книгу Pragmatic.SQL.Antipatterns.
В ней сильно ругаю EAV, когда количество атрибутов заранее неизвестно, как альтернатива EAV предлагается:
Semistructured Data
If you have many subtypes or if you must support new attributes frequently,
you can add a BLOB column to store data in a format such
as XML or JSON, which encodes both the attribute names and their
values. Martin Fowler calls this pattern the Serialized LOB.
Download EAV/soln/create-blob-tables.sql
CREATE TABLE Issues (
issue_id SERIAL PRIMARY KEY,
reported_by BIGINT UNSIGNED NOT NULL,
product_id BIGINT UNSIGNED,
priority VARCHAR(20),
version_resolved VARCHAR(20),
status VARCHAR(20),
issue_type VARCHAR(10), -- BUG or FEATURE
attributes TEXT NOT NULL, -- all dynamic attributes for the row
FOREIGN KEY (reported_by) REFERENCES Accounts(account_id),
FOREIGN KEY (product_id) REFERENCES Products(product_id)
);
The advantage of this design is that it’s completely extensible. You can
store new attributes in the blob at any time. Every row stores a potentially
distinct set of attributes, so you have as many subtypes as you
have rows.
The disadvantage is that SQL has little support for accessing specific
attributes in such a structure. You can’t easily select individual attributes
within the blob for row-based restriction, aggregate calculation,
sorting, or other operations. You must fetch the whole blob of attributes
as a single value and write application code to decode and interpret the
attributes.
This design is best when you can’t limit yourself to a finite set of subtypes
and when you need complete flexibility to define new attributes
at any time.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36857044
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В книге есть фраза, что системы с использование EAV где-то через год становятся громоздкими.
Может ли кто-нибудь прокомментировать данное утверждение?
Если кого-нибудь заинтересует книга, пишите, могу скинуть по почте, она занимает около 1.5Mb, так что здесь выложить её не получится.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36857093
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EAV имхо - наименьшее зло.
хранение в блобе или XML гораздо неудобнее.
на практике используют гибрид EAV - поля известные на этапе проектирования лежат в нормальных таблицах, поля пользовательские в EAV.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36857114
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowEAV имхо - наименьшее зло.
хранение в блобе или XML гораздо неудобнее.
на практике используют гибрид EAV - поля известные на этапе проектирования лежат в нормальных таблицах, поля пользовательские в EAV.

А в чем провляются основные недостатки?
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36857135
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня для списка есть от 1 до 3 постоянных полей, и до 40 полей определенных пользователем.
При чём вполне возможно, что полья определенные пользователем будут использоваться не так уж часто, но возможность их создания и проверки условий по всем полям быть должна.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36857710
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowEAV имхо - наименьшее зло.
хранение в блобе или XML гораздо неудобнее.
на практике используют гибрид EAV - поля известные на этапе проектирования лежат в нормальных таблицах, поля пользовательские в EAV.

Проблема гибридной системы указанной вами видится в сложности задания логической проверки, на основе атрибутов.
Допустим есть постоянные атрибуты Email, FirstName, LastName, которые храняться как обычные поля в таблице.
И есть специфические для определенного списка, которые хранятся как EAV, например, AGE.
Если для пользователя нужно хранить условие
Email содержит something@mydomain.com И AGE > 20, то возникает вопрос, как хранить такие данны в таблице, так как в одном случае атрибут - обычное поле в таблице, в другом случае - нет.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36857819
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вы думаете в данном случае выбор может зависеть от используемой СУБД?
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36858518
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему бы не рассказать подробнее об условиях задачи, и попытаться решить ее простыми атомарными полями в нормальной форме. Нового под луной очень и очень мало. Или просто хочется что-нибудь эдакой, чего ни у кого нет?
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36858866
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257А почему бы не рассказать подробнее об условиях задачи, и попытаться решить ее простыми атомарными полями в нормальной форме. Нового под луной очень и очень мало. Или просто хочется что-нибудь эдакой, чего ни у кого нет?

Нет, что-нибудь эдакого не хочется. Просто хочется решить задачу достаточно эффективно и не изобретать велосипед. Спасибо, за замечание. Я попытаюсь сформулировать задачу точнее.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859602
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача примерно такая:

Есть задача рассылать почту списку подписчиков, причём иметь возможность отправлять данные не обязательно всему списку, а некоторому сегменту, который удовлетворяет определенным условия.
В системе есть следующие объекты:
1. Списки подписчиков (lists). Список подписчиков – контейнер для хранения подписчиков.
2. Подписчики – пользователи, которым отправляется информация. Информация о подписчиках бывает как общая для всех подписчиков, например, электронный адрес, так и специфичный для списка, куда входит подписчик, набор атрибутов. Например, для некоторого списка могут быть список дополнительных полей о подписчиков, которые должны храниться для подписчиков данного списка. Отношения между списком подписчиков и подписчиком – один ко многим, если подписчик входит в несколько список сразу, то система их считает разными подписчиками.
3. Группы (groups) и подгруппы (dimensions). С каждый список пользователей может иметь произвольное число групп. Каждая группа содержит одну или более подгрупп. Таким образом, каждый подписчик данного списка может входить в одну или несколько подгрупп каждой группы.
4. Кампании (campaigns) – это сообщения, отправляемые подписчикам определенного списка подписчиков. Отношения между списком подписчиков и компаниями один ко многим.
5. Для кампании может быть задан не более одного сегмента, который представляет собой набор условий, объединенных либо по “И”, либо по “ИЛИ”. Условия бывают двух типов:
• Значение поля подписчика Оператор Значение (при чем поле может быть как общее для всех подписчиков списков, так и специфичное для данного списка).
• Имя группы Оператор (в одну из подгрупп, во все подгруппы, ни в одну из подгрупп) Список подгрупп.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859610
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859646
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Есть задача рассылать почту списку подписчиков

Нормальная задача. Для какой цели наворочено то, что вы нарисовали, не очень понятно. Опишите подробнее предметную область и принципы группировки пользователей.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859660
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Операция проверки условий и отправки кампаний выполняется регулярно, это в общем-то основная функция системы, наряду с создание и редактирование объектов системы. Поэтому хотелось бы реализовать это наиболее эффективно. Таблицы списков и кампаний являются подчиненными таблицами для таблицы аккаунты, которая для простоты не указана на схеме. То есть есть много аккаунтов, каждый их который имеет набор подобных объектов.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859673
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Есть задача рассылать почту списку подписчиков

Нормальная задача. Для какой цели наворочено то, что вы нарисовали, не очень понятно. Опишите подробнее предметную область и принципы группировки пользователей.

Подпичики могу группироваться в одну или нескольк подгрупп группы произвольно.
Например, группа "Языки" може иметь подгруппы "Английский", "Немецкий", "Французский".
Соответсвенно условие в сегмене для груп будет отправить пользователям знающий один из этих языков, все эти языки, ни одного из этих языков.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859681
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объекты, система, аккаунты - это просто слова. Есть юзеры, которые сгруппированы по некоторым правилам. Есть нечто, получаемое этими юзерами. Вопрос тривиален: как эти юзеры сгруппированы? Не надо схем и зависимостей, просто семантическое определение.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859693
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Подпичики могу группироваться в одну или нескольк подгрупп группы произвольно.

Нормальная реализация. Не хватает формального описания принципов группировки, если я правильно понял ваш ответ.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859701
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Назначение таблиц, приведенных в схеме следующее:
1. Lists - списки подписчиков.
2. Campaigns - кампании.
3. Subscribers - подписчики, каждый подписчик входит только в один список и хранит как общие поля для всех подписчиков, например, email, так и специфичный для списка, куда он входит.
4. User_defined_fields - специфичные для списков поля, которые которые должных храниться для подписчиков данного списка.
5. Field_values - значения специфичных для данного списка полей подписчиков.
6. Field_choices - для некторых полей значений могут вводиться только из фиксированного набора, эти значение храняться в этой таблице.
7. Subscribers_types - информация о типе поля (не уверен, что эта таблица необходимо, но это пока не важно).
8. Groups - группа для списка, например, "Знание языков".
9. Dimensions - подгруппы данной группы, например, для группы "Знание языков" - "Английский", "Немецкий" и т.д.
10. Dimensions_subscriber - указывает подписчиков, которые входя в подгруппу данной группы.
11.Segment_conditions - условия проверка для сегмента кампании.
12. Segment_dimensions - подгруппы, проверка вхождения в которые проверяется для условия сегмента кампании.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859705
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Подпичики могу группироваться в одну или нескольк подгрупп группы произвольно.

Нормальная реализация. Не хватает формального описания принципов группировки, если я правильно понял ваш ответ.

Могли бы вы, пожалуйста, пояснить, что вы имеете в виду?
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859709
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621,

Вы имеет под в виду подписчиков, когда говорите о юзерах?
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859727
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Могли бы вы, пожалуйста, пояснить, что вы имеете в виду?

"Языки" можно интерпретировать по-разному. Это могут быть, например, языки, которые изучает пользователь или языки, которыми владеет пользователь. Также пользователь может иметь предпочтение, на каком языке он хотел бы получать рассылаемые материалы. Если использовать просто определение "языки", функциональная нагрузка такой группировки не очевидна.

Ваша задача - придумать такое формальное описание характеристик, которое позволяло бы конструировать семантические условия выборки. С учетом того, что в вашей системе уже есть структура (или часть структуры) для семантической классификации.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859729
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Объекты, система, аккаунты - это просто слова. Есть юзеры, которые сгруппированы по некоторым правилам. Есть нечто, получаемое этими юзерами. Вопрос тривиален: как эти юзеры сгруппированы? Не надо схем и зависимостей, просто семантическое определение.

Для списка подписчиков может быть создана группа и подгруппа. Соотственно подписчик может входить в любое число подгрупп групп списка, куда он входит.
Если например, для списка есть группа "знание языка" (группа должна иметь хотя бы одну подгруппы, может быть моя формировка не совсем правильная я не знаю как лучше назвать), которая имеет подгруппы "Английский", "Немецкий". Для полписчика указано, входи ли он в подгруппу данной группы списка или нет.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859746
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Для списка подписчиков может быть создана группа и подгруппа.

На мой взгляд, неоправданно жесткая реализация. Есть смысл выбрать группы и подгруппы по более формальному признаку, а дополнительные признаки для пользователей вести за рамками групп.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859750
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Вы имеет под в виду подписчиков, когда говорите о юзерах?

Да.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859757
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Могли бы вы, пожалуйста, пояснить, что вы имеете в виду?

"Языки" можно интерпретировать по-разному. Это могут быть, например, языки, которые изучает пользователь или языки, которыми владеет пользователь. Также пользователь может иметь предпочтение, на каком языке он хотел бы получать рассылаемые материалы. Если использовать просто определение "языки", функциональная нагрузка такой группировки не очевидна.

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

Что касается групп или подгрупп, мне кажется, что здесь семантика не очень важна, важен ли сам факт входи ли нет в некотору подгруппу. Можно рассматривать здесть просто, как удовлетворение абстрактному условия входит ли подписчик в одну, все, ни одну подгруппу данной группы списка или нет. А что под этой группой подразумевание пользователь это не столь важно. Смысл групп и подгруппы может быть разный.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859766
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Для списка подписчиков может быть создана группа и подгруппа.

На мой взгляд, неоправданно жесткая реализация. Есть смысл выбрать группы и подгруппы по более формальному признаку, а дополнительные признаки для пользователей вести за рамками групп.

Можете ли вы пояснить вашу мысль, может быть, на примере? Не совсем понятно, что вы имеет в виду.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859784
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Что касается групп или подгрупп, мне кажется, что здесь семантика не очень важна

На мой взгляд, как раз принципиальна.

Не знаю, давно ли вы на sql.ru, здесь это обсуждалось некоторое время назад. Семантическая классификация позволяет при необходимости осуществить логический переход от слабоструктурированных данных к реляционной структуре. Но если такой задачи нет и заведомо известно, что она никогда не возникнет, то - да, можно ее не рассматривать.

Однако, мне кажется, что в данном случае как раз семантическая классификация может быть решением вашей задачи.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859801
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Можете ли вы пояснить вашу мысль, может быть, на примере? Не совсем понятно, что вы имеет в виду.

Пользователи -> единые для всех пользователей группы и подгруппы (сложно сказать, какими они могут быть в вашей системе без знания ее специфики; смысл в возможности однозначной группировке всех пользователей).
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859807
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Что касается групп или подгрупп, мне кажется, что здесь семантика не очень важна

На мой взгляд, как раз принципиальна.

Не знаю, давно ли вы на sql.ru, здесь это обсуждалось некоторое время назад. Семантическая классификация позволяет при необходимости осуществить логический переход от слабоструктурированных данных к реляционной структуре. Но если такой задачи нет и заведомо известно, что она никогда не возникнет, то - да, можно ее не рассматривать.

Однако, мне кажется, что в данном случае как раз семантическая классификация может быть решением вашей задачи.

Честно говоря, больше сказать в данный момент о семантике. Здесь семантика скорее определяется пользователем.
Для хранения этих слабоструктурированных данный подумывал о применении паттерна Serizalized LOB, то есть хранить данную в виде строки. Но в тоже время, я не уверен, что этот способ будет быстрее несмотря, на существенное уменьшение числа таблица, которые надо объединять для проверки в общем то не очень сложных условий.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859814
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Можете ли вы пояснить вашу мысль, может быть, на примере? Не совсем понятно, что вы имеет в виду.

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

Дело в том, что не существует групп единых для всех подписчиков, они специфичны для каждого списка, их создает владелец списка и это может быть абсолютно всё что угодно и использоваться в самых разных предметных областях.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859819
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть сематику задает пользователь, в зависимости от назначения списка и используемой им предметной области.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859824
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Здесь семантика скорее определяется пользователем.

;) На мой взгляд, было бы опрометчиво отдавать структурирование на откуп пользователям. Хотя... хозяин - барин, конечно.

> не уверен, что этот способ будет быстрее

Мне кажется, было бы правильным сначала найти принципиальное решение, а уже потом оптимизировать быстродействие.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859831
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> не существует групп единых для всех подписчиков

Мне сложно представить такую систему.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859836
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Здесь семантика скорее определяется пользователем.

;) На мой взгляд, было бы опрометчиво отдавать структурирование на откуп пользователям. Хотя... хозяин - барин, конечно.

> не уверен, что этот способ будет быстрее

Мне кажется, было бы правильным сначала найти принципиальное решение, а уже потом оптимизировать быстродействие.

Это требование заказчика, группы и поля специфичные для списка, должны создаваться владельцем списка подписчиков.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36859935
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621,

Это Software as a service (SaaS) система, которая предоставляет возможность компаниям использовать рассылки.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860340
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Это требование заказчика, группы и поля специфичные для списка, должны создаваться владельцем списка подписчиков.

Это не исключает возможность существования универсальной классификации. ;) Если совсем уж честно, мне сложно представить, что это за заказчик и почему он настолько туп, что его не интересует исследование аудитории.

Впрочем, это не мое дело. Ваше решение, если особо не лезть в детали, вполне жизнеспособно, варианты оптимизации структуры данных будут зависеть от дополнительных условий (скажем, параллельное существование одной и той же рассылки на разных языках или существование у пользователя нескольких адресов).
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860403
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У пользователя не может быть несколько адресов, только один email.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860438
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860480
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> У пользователя не может быть несколько адресов, только один email.

Это тоже требование заказчика? Легко представить себе как минимум адрес корпоративной почты и персональной. И персональные ящики тоже могут служить разным целям. Впрочем, это ваш заказчик. Ну... да, с очень ограниченным представлением о функционале того, что ему нужно, но это в данном случае плюс, поскольку уменьшает количество работы. ;)
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860532
Flying Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005В книге есть фраза, что системы с использование EAV где-то через год становятся громоздкими.
Может ли кто-нибудь прокомментировать данное утверждение?
Если кого-нибудь заинтересует книга, пишите, могу скинуть по почте, она занимает около 1.5Mb, так что здесь выложить её не получится.

Можно заполучить эту книгу ? Мой email в профайле.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860534
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> У пользователя не может быть несколько адресов, только один email.

Это тоже требование заказчика? Легко представить себе как минимум адрес корпоративной почты и персональной. И персональные ящики тоже могут служить разным целям. Впрочем, это ваш заказчик. Ну... да, с очень ограниченным представлением о функционале того, что ему нужно, но это в данном случае плюс, поскольку уменьшает количество работы. ;)

Я думаю сделано это из-за того
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860547
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Один адрес для рассылки используется во всех подобных системах, которые я знаю. Заказчик решил поступить аналогично. Наверное, не имеет смысл отправлять одну и туже информацию по разным адресам одному и тому же подписчику, в некоторых тарифах плата взимается за количество отправки писем.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860559
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying DutchmanOLEG_2005В книге есть фраза, что системы с использование EAV где-то через год становятся громоздкими.
Может ли кто-нибудь прокомментировать данное утверждение?
Если кого-нибудь заинтересует книга, пишите, могу скинуть по почте, она занимает около 1.5Mb, так что здесь выложить её не получится.

Можно заполучить эту книгу ? Мой email в профайле.

Книгу вам отправил.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860581
Flying Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005
Книгу вам отправил.

Огромное спасибо !
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860628
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Один адрес для рассылки используется во всех подобных системах, которые я знаю.

Не совсем так. Я бы сказал, что в распространенном софте для управления рассылками почтовый аккаунт приравнен к пользователю. Что как бы не корректно. В принципе, можно было бы ожидать во вновь проектируемых системах исправления недочетов существующих. Но если заказчик платит деньги - кто я такой, чтобы его осуждать? ;)

> не имеет смысл отправлять одну и туже информацию по разным адресам одному и тому же подписчику

Не имеет. Но, например, воспользоваться альтернативным адресом при недоступности основного - очень даже правильно. Аудитория стоит денег. Глупо терять подписчика на ровном месте.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860684
Flying Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005В книге есть фраза, что системы с использование EAV где-то через год становятся громоздкими.
Может ли кто-нибудь прокомментировать данное утверждение?


"Становятся громоздкими" - какое-то расплывчатое утверждение. Одни проекты становятся громоздкими, другие нет. Я недавно учавствовал в проекте по разработке веб-магазинов, в котором мы использовали EAV для хранения атрибутов различных товаров. Конечно, с EAV несколько медленнее, чем без него из-за более сложной структуры БД, но в нашем случае скорость работы была удовлетворительной.

Использование XML для хранения атрибутов было бы проще, но в этом случае возникли бы проблемы с поиском. Например, запрос такого вида: "Найти всю обувь марки Ferragamo черного цвета размера 44" с использованием XML реализовать значительно сложнее, чем с использованием EAV.

В последнем случае (для нашей реализации EAV) это решается одним простым запросом с использованием реляционного деления. Причем запрос один и тот же для любых атрибутов (просто он реализуется для SQL Server, для других СУБД может быть и сложнее). Конечно, здесь я имею в виду запросы с проверкой значений атрибутов только на равенство. Запросы типа "Найти все мониторы с дигональю от 17 до 21 дюйма" будут реализовываться сложнее. Хотя и в этом случай реализация с EAV будет проще реализации с XML.

Хотя, вроде бы, в последней версии SQL Server (наш проект разрабатывался под SQL Server 2008) появились средства для индексирования XML-полей и быстрого поиска в них (но я в пока еще не разобрался, так что сказать ничего не могу).
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860724
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying DutchmanOLEG_2005В книге есть фраза, что системы с использование EAV где-то через год становятся громоздкими.
Может ли кто-нибудь прокомментировать данное утверждение?


"Становятся громоздкими" - какое-то расплывчатое утверждение. Одни проекты становятся громоздкими, другие нет. Я недавно учавствовал в проекте по разработке веб-магазинов, в котором мы использовали EAV для хранения атрибутов различных товаров. Конечно, с EAV несколько медленнее, чем без него из-за более сложной структуры БД, но в нашем случае скорость работы была удовлетворительной.

Использование XML для хранения атрибутов было бы проще, но в этом случае возникли бы проблемы с поиском. Например, запрос такого вида: "Найти всю обувь марки Ferragamo черного цвета размера 44" с использованием XML реализовать значительно сложнее, чем с использованием EAV.

В последнем случае (для нашей реализации EAV) это решается одним простым запросом с использованием реляционного деления. Причем запрос один и тот же для любых атрибутов (просто он реализуется для SQL Server, для других СУБД может быть и сложнее). Конечно, здесь я имею в виду запросы с проверкой значений атрибутов только на равенство. Запросы типа "Найти все мониторы с дигональю от 17 до 21 дюйма" будут реализовываться сложнее. Хотя и в этом случай реализация с EAV будет проще реализации с XML.

Хотя, вроде бы, в последней версии SQL Server (наш проект разрабатывался под SQL Server 2008) появились средства для индексирования XML-полей и быстрого поиска в них (но я в пока еще не разобрался, так что сказать ничего не могу).

Я использую Mysql. А если у меня условия храняться в виде:
Значение поля Оператор сравнеия Значение, которые доспустим хранить в виде XML или JSON в БД.
То есть извлечь строковое поле и преобразовать в массив, пробежаться по нему для проверки условий?
Но в это случае труднее выполнять проверку целостности данных. И не факт, что обработка на PHP в этом случае была бы быстрее чем запрос с объединением таблиц.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860728
Nemoxur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Постройте таблицу в котором храните дерево групп, подгрупп
и таблицы с атрибутами
всё можно сделать через таблицы в 4-6 норм форме акаунты, таблица люди и тд, постройте индексы и всё будет летать
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860759
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NemoxurПостройте таблицу в котором храните дерево групп, подгрупп
и таблицы с атрибутами
всё можно сделать через таблицы в 4-6 норм форме акаунты, таблица люди и тд, постройте индексы и всё будет летать
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860763
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NemoxurПостройте таблицу в котором храните дерево групп, подгрупп
и таблицы с атрибутами
всё можно сделать через таблицы в 4-6 норм форме акаунты, таблица люди и тд, постройте индексы и всё будет летать

Я подумаю, можно ли хранить группы и подгруппы в одной таблице.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860770
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но в любом случае хранение двух типов условий в таблице segment_conditions кажется не очень красивым.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36860797
Flying Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005
Я использую Mysql. А если у меня условия храняться в виде:
Значение поля Оператор сравнеия Значение, которые доспустим хранить в виде XML или JSON в БД.
То есть извлечь строковое поле и преобразовать в массив, пробежаться по нему для проверки условий?


Это будет сложнее и медленнее, чем с использованием SQL-запросов (хотя я и не знаком с последними
веяниями в области обработки XML в современных СУБД - вполне может статься, что SQL Server позволяет это сделать просто).

OLEG_2005Но в это случае труднее выполнять проверку целостности данных.

Совершенно верно. Хотя в случае использования XML можно ассоциировать каждый набор атрибутов со своей XML-схемой и проверять с ее помощью целостность данных (например, при помощи триггера для таблицы, в которой хранятся значения атрибутов). Это можно реализовать для SQL Server, хотя я еще не знаю, насколько это трудоемко (собираюсь осуществить case study по этому поводу).
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36861123
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying Dutchman,

Насколько я знаю, в mysql работа не таких средств для работы с xml, как в MS SQL Server.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36861578
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NemoxurПостройте таблицу в котором храните дерево групп, подгрупп
и таблицы с атрибутами
всё можно сделать через таблицы в 4-6 норм форме акаунты, таблица люди и тд, постройте индексы и всё будет летать

Честно говоря, ваша идея объединение групп/подгрупп в одну таблице и указание в этом случае какой входит ли подписчик в подгруппу не совсем понятна.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36861844
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть кто-нибудь видел open source решение, где реализуется подобная функциональность сегиментации данных, когда есть набор атрибутов как постоянных, так и заданных пользователем и сегмент формируется наборо условий проверки. Интересно было бы посмотреть, как реализуют подобную функциональность.
Судя по всему, скрипт, запущенный в сron будеть смотреть неотравленные кампании и выбирать подписчиков, которые удовлетворяют некоторому условию.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36861867
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так же можно предположить, что семнентация данных будет применяться не всегда и может быть не так часто. Также вполне можно предположить, что не все списки будут иметь заданные пользователем поля. Но возможность сегментации и создания опреленных пользователем полей быть должна.
Условия в сегментах двух типов:
Значение Поле (общее для всех списков или специфичное для данного списка) - Оператор сравнения - Значение

Группы Оператор (входит в одну из подгрупп, во все, ни в одну) Подгруппы.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36862761
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется понятие группы/подгруппы эквивалентно в общем типу данных Checkbox.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36864245
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел коммерческую систему Interspire, построенную на Open Source.
Глянул на их БД, они активно используют паттерн Serialized LOB.
Вот пример таблиц сегментов, условия проверки для подписчиков хранятся в виде текста.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36864247
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36864260
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36864271
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем интересно, что используют они для это функцию сериализации PHP, данные распаковываются в массив PHP. Решение кажется странным, так как, например, обрабатывть данные на чем-нибудь кроме PHP в этом случае очень непросто.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36864307
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Описание типов данных в сисетме также задается строкой, сериализованным массив PHP.
Причем, как я понял типы данных бывают как глобальные, так и локальные.
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36864348
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скриншот с таблицами с типами данных:
...
Рейтинг: 0 / 0
хранение списка объектов с полями, заданными пользователями и условий их выбор
    #36890413
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying DutchmanOLEG_2005В книге есть фраза, что системы с использование EAV где-то через год становятся громоздкими.
Может ли кто-нибудь прокомментировать данное утверждение?


"Становятся громоздкими" - какое-то расплывчатое утверждение. Одни проекты становятся громоздкими, другие нет. Я недавно учавствовал в проекте по разработке веб-магазинов, в котором мы использовали EAV для хранения атрибутов различных товаров. Конечно, с EAV несколько медленнее, чем без него из-за более сложной структуры БД, но в нашем случае скорость работы была удовлетворительной.

Использование XML для хранения атрибутов было бы проще, но в этом случае возникли бы проблемы с поиском. Например, запрос такого вида: "Найти всю обувь марки Ferragamo черного цвета размера 44" с использованием XML реализовать значительно сложнее, чем с использованием EAV.

В последнем случае (для нашей реализации EAV) это решается одним простым запросом с использованием реляционного деления. Причем запрос один и тот же для любых атрибутов (просто он реализуется для SQL Server, для других СУБД может быть и сложнее). Конечно, здесь я имею в виду запросы с проверкой значений атрибутов только на равенство. Запросы типа "Найти все мониторы с дигональю от 17 до 21 дюйма" будут реализовываться сложнее. Хотя и в этом случай реализация с EAV будет проще реализации с XML.

Хотя, вроде бы, в последней версии SQL Server (наш проект разрабатывался под SQL Server 2008) появились средства для индексирования XML-полей и быстрого поиска в них (но я в пока еще не разобрался, так что сказать ничего не могу).

А если нужно извлечть двадцать атрибутов при использовании EAV, то нужно сделать 20 объединений, не будет ли это непримлимо медленным решением. Похоже с ростом количества атрибутов быстродействие запроса будет падать очень быстро.
...
Рейтинг: 0 / 0
87 сообщений из 87, показаны все 4 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение списка объектов с полями, заданными пользователями и условий их выбор
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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