Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / раскритикуйте архитектуру БД / 14 сообщений из 14, страница 1 из 1
27.09.2007, 18:43
    #34832560
gundos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
Последнее время прихожу к выводу, что удобнее всего в плане дальнейшей гибкости и масштабирования проектируемой системы все связывание подчиненных данных с главными надо проводить через параметры, а не создавая новых таблиц, столбцов и т.д... Скорее всего я неправ с точки зрения быстродействия. Можете ли меня проконсультировать по проблемам такого подхода?
По готовым базам - вижу, что на практике этим не очень пользуются.

Описываю суть:
например есть данные:
- таблица поставщики - главный,
- таблица товар - подчиненный,
- таблица клиенты - подчиненный.
Вариант 1 (более чем распространенный):
- создать таблицу "поставщик-товары",
- создать таблицу "поставщик-клиенты";
Вариант 2 (предлагаемый):
- создать таблицу "параметры",
- создать таблицу "тип параметров" - это и есть "товар", "клиенты",
- создать таблицу "значения параметров" со столбцами разного формата.
- создать таблицу "поставщик-параметры", с одним из столбцов - тип параметра и сделать индекс "поставщик - тип параметра - параметр".
...
Рейтинг: 0 / 0
27.09.2007, 19:03
    #34832617
Pir
Pir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
вариант 2:

для небольшой системы может и приемлемо. из плюсов - добавление новых атрибутов объектов не требует изменения структуры бд.
зато много минусов такой универсальной архитектуры:
- отказываешься от множества возможностей субд (партицирование, ограничения целостности и т.д.)
- данные денормализованы
- при сложных условиях поиска по множеству атрибутов линейно растет количество join'ов
...
Рейтинг: 0 / 0
27.09.2007, 19:22
    #34832668
gundos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
Код: plaintext
- отказываешься от множества возможностей субд (партицирование, ограничения целостности и т.д.)
а если в таблицу "значения параметров" вогнать еще и тип параметра - могу сделать партиционирование по типу. В таблице "значения параметров" внешним ключом сделать "код параметра, тип параметра", в таблице "поставщик-параметры"-первичным ключом. Как такой вариант?
Код: plaintext
- данные денормализованы
Где?
Код: plaintext
- при сложных условиях поиска по множеству атрибутов линейно растет количество join'ов
а не будет ли при предлагаемых мной условиях - это сильно незначительным замедлением?
...
Рейтинг: 0 / 0
27.09.2007, 19:26
    #34832680
gundos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
чем вызвано...мне вбазе надо хранить еще и все изменения сделанные когда либо. Логично историю отнести в отдельную часть (одни таблицы), а реальные данные - в другую. Если брать 1-й вариант - у меня столько дублей будет похожих объектов будет...жуть, а так всего 4
...
Рейтинг: 0 / 0
28.09.2007, 01:10
    #34833158
sti
sti
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
2 автор

Вам аббревиатура EAV что-нибудь говорит?
...
Рейтинг: 0 / 0
28.09.2007, 08:39
    #34833332
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
"Все велосипеды уже изобретены и ждут своих седоков" - из форумов SQL.RU

Серьезно - решение проектировщика о балансе между конкретной реализацией и универсальностью за счет соответсвующих методов и является сутью разработки.
...
Рейтинг: 0 / 0
28.09.2007, 10:53
    #34833699
gundos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
авторВам аббревиатура EAV что-нибудь говорит?
пока нет...если по теме, можно ссылочку (в ya.ru что то толком ничего не написано)?
...
Рейтинг: 0 / 0
28.09.2007, 11:17
    #34833840
sti
sti
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
да хотя бы здесь в поиске введите EAV.
...
Рейтинг: 0 / 0
28.09.2007, 11:57
    #34834046
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
gundos авторВам аббревиатура EAV что-нибудь говорит?
пока нет...если по теме, можно ссылочку (в ya.ru что то толком ничего не написано)? вот
На английском, но с картинками
...
Рейтинг: 0 / 0
28.09.2007, 12:36
    #34834244
gundos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
to BELY: за ссылку спасибо, довольно наглядно и понятно. Если по поводу сравнения методов архитектуры (быстродействие) есть у кого мукулатура (желательно на русском) - буду признателен.
...
Рейтинг: 0 / 0
28.09.2007, 14:31
    #34834850
OraDen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
gundosВариант 2 (предлагаемый):
- создать таблицу "параметры",
- создать таблицу "тип параметров" - это и есть "товар", "клиенты",
- создать таблицу "значения параметров" со столбцами разного формата.
- создать таблицу "поставщик-параметры", с одним из столбцов - тип параметра и сделать индекс "поставщик - тип параметра - параметр".Зачем "поставщик-параметры", иди те уж до конца, поставщика в "тип параметров", а в таблице "значения параметров" еще и ссылки храните между клиентами, поставщиками ,товарами и пр.

А теперь попробуйте сделать простую форму с одним мастер-детайл
...
Рейтинг: 0 / 0
28.09.2007, 14:49
    #34834924
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
gundosto BELY: за ссылку спасибо, довольно наглядно и понятно. Если по поводу сравнения методов архитектуры (быстродействие) есть у кого мукулатура (желательно на русском) - буду признателен.Сравнение быстродействия - я думаю нигде не найти.
Но чтобы понять степень проблем, достаточно представить следующий запрос:

Надо отобрать всех поставщиков, которые имеют статус "Партнер", которые были созданы за последние 2 месяца и у которых стоит признак "Зарубежный".

Для обычной таблицы - это будет три поля и запрос будет всего к одной таблице.
Для EAV - надо будет пройтись по значениям атрибутов.
Если у нас организаций 100тыс в базе, у каждой в среднем 20 атрибутов - сколько придется перелопатить записей в EAV структуре - можно представить.
...
Рейтинг: 0 / 0
28.09.2007, 19:19
    #34835890
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
gundosto BELY: за ссылку спасибо, довольно наглядно и понятно. Если по поводу сравнения методов архитектуры (быстродействие) есть у кого мукулатура (желательно на русском) - буду признателен.Честно говоря, не понимаю смысла EAV.

В сервере БД уже есть таблицы, подобные тем, которые вы хотите создать.

Зачем делать эту работу ещё раз?

"все связывание подчиненных данных с главными надо проводить через параметры, а не создавая новых таблиц, столбцов и т.д..."

Чем сложнее создать таблицу в сервере СУБД, пользуясь его командами, чем в вашей системе, пользуясь вашими командами? Вы создадите более удобный и простой язык описания схемы? :-)

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

В ообщем, поищите здесь все обсуждения этой темы, почитайте.
...
Рейтинг: 0 / 0
29.09.2007, 14:28
    #34836399
kittn2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
раскритикуйте архитектуру БД
gundos.
Поздравляю ! Вы очередной первооткрыватель базы "по Тенцеру"! Что это такое - в поиск. Там вы найдете массу аргументов "за" и "против".

Одна из ссылок -
/topic/246069&pg=-1
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / раскритикуйте архитектуру БД / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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