powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение списка объектов с полями, заданными пользователями и условий их выбор
25 сообщений из 87, страница 1 из 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
25 сообщений из 87, страница 1 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение списка объектов с полями, заданными пользователями и условий их выбор
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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