|
|
|
раскритикуйте архитектуру БД
|
|||
|---|---|---|---|
|
#18+
Последнее время прихожу к выводу, что удобнее всего в плане дальнейшей гибкости и масштабирования проектируемой системы все связывание подчиненных данных с главными надо проводить через параметры, а не создавая новых таблиц, столбцов и т.д... Скорее всего я неправ с точки зрения быстродействия. Можете ли меня проконсультировать по проблемам такого подхода? По готовым базам - вижу, что на практике этим не очень пользуются. Описываю суть: например есть данные: - таблица поставщики - главный, - таблица товар - подчиненный, - таблица клиенты - подчиненный. Вариант 1 (более чем распространенный): - создать таблицу "поставщик-товары", - создать таблицу "поставщик-клиенты"; Вариант 2 (предлагаемый): - создать таблицу "параметры", - создать таблицу "тип параметров" - это и есть "товар", "клиенты", - создать таблицу "значения параметров" со столбцами разного формата. - создать таблицу "поставщик-параметры", с одним из столбцов - тип параметра и сделать индекс "поставщик - тип параметра - параметр". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 18:43 |
|
||
|
раскритикуйте архитектуру БД
|
|||
|---|---|---|---|
|
#18+
вариант 2: для небольшой системы может и приемлемо. из плюсов - добавление новых атрибутов объектов не требует изменения структуры бд. зато много минусов такой универсальной архитектуры: - отказываешься от множества возможностей субд (партицирование, ограничения целостности и т.д.) - данные денормализованы - при сложных условиях поиска по множеству атрибутов линейно растет количество join'ов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 19:03 |
|
||
|
раскритикуйте архитектуру БД
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 19:22 |
|
||
|
раскритикуйте архитектуру БД
|
|||
|---|---|---|---|
|
#18+
чем вызвано...мне вбазе надо хранить еще и все изменения сделанные когда либо. Логично историю отнести в отдельную часть (одни таблицы), а реальные данные - в другую. Если брать 1-й вариант - у меня столько дублей будет похожих объектов будет...жуть, а так всего 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 19:26 |
|
||
|
раскритикуйте архитектуру БД
|
|||
|---|---|---|---|
|
#18+
2 автор Вам аббревиатура EAV что-нибудь говорит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 01:10 |
|
||
|
раскритикуйте архитектуру БД
|
|||
|---|---|---|---|
|
#18+
"Все велосипеды уже изобретены и ждут своих седоков" - из форумов SQL.RU Серьезно - решение проектировщика о балансе между конкретной реализацией и универсальностью за счет соответсвующих методов и является сутью разработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 08:39 |
|
||
|
раскритикуйте архитектуру БД
|
|||
|---|---|---|---|
|
#18+
авторВам аббревиатура EAV что-нибудь говорит? пока нет...если по теме, можно ссылочку (в ya.ru что то толком ничего не написано)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 10:53 |
|
||
|
раскритикуйте архитектуру БД
|
|||
|---|---|---|---|
|
#18+
да хотя бы здесь в поиске введите EAV. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 11:17 |
|
||
|
раскритикуйте архитектуру БД
|
|||
|---|---|---|---|
|
#18+
gundos авторВам аббревиатура EAV что-нибудь говорит? пока нет...если по теме, можно ссылочку (в ya.ru что то толком ничего не написано)? вот На английском, но с картинками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 11:57 |
|
||
|
раскритикуйте архитектуру БД
|
|||
|---|---|---|---|
|
#18+
to BELY: за ссылку спасибо, довольно наглядно и понятно. Если по поводу сравнения методов архитектуры (быстродействие) есть у кого мукулатура (желательно на русском) - буду признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 12:36 |
|
||
|
раскритикуйте архитектуру БД
|
|||
|---|---|---|---|
|
#18+
gundosВариант 2 (предлагаемый): - создать таблицу "параметры", - создать таблицу "тип параметров" - это и есть "товар", "клиенты", - создать таблицу "значения параметров" со столбцами разного формата. - создать таблицу "поставщик-параметры", с одним из столбцов - тип параметра и сделать индекс "поставщик - тип параметра - параметр".Зачем "поставщик-параметры", иди те уж до конца, поставщика в "тип параметров", а в таблице "значения параметров" еще и ссылки храните между клиентами, поставщиками ,товарами и пр. А теперь попробуйте сделать простую форму с одним мастер-детайл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 14:31 |
|
||
|
раскритикуйте архитектуру БД
|
|||
|---|---|---|---|
|
#18+
gundosto BELY: за ссылку спасибо, довольно наглядно и понятно. Если по поводу сравнения методов архитектуры (быстродействие) есть у кого мукулатура (желательно на русском) - буду признателен.Сравнение быстродействия - я думаю нигде не найти. Но чтобы понять степень проблем, достаточно представить следующий запрос: Надо отобрать всех поставщиков, которые имеют статус "Партнер", которые были созданы за последние 2 месяца и у которых стоит признак "Зарубежный". Для обычной таблицы - это будет три поля и запрос будет всего к одной таблице. Для EAV - надо будет пройтись по значениям атрибутов. Если у нас организаций 100тыс в базе, у каждой в среднем 20 атрибутов - сколько придется перелопатить записей в EAV структуре - можно представить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 14:49 |
|
||
|
раскритикуйте архитектуру БД
|
|||
|---|---|---|---|
|
#18+
gundosto BELY: за ссылку спасибо, довольно наглядно и понятно. Если по поводу сравнения методов архитектуры (быстродействие) есть у кого мукулатура (желательно на русском) - буду признателен.Честно говоря, не понимаю смысла EAV. В сервере БД уже есть таблицы, подобные тем, которые вы хотите создать. Зачем делать эту работу ещё раз? "все связывание подчиненных данных с главными надо проводить через параметры, а не создавая новых таблиц, столбцов и т.д..." Чем сложнее создать таблицу в сервере СУБД, пользуясь его командами, чем в вашей системе, пользуясь вашими командами? Вы создадите более удобный и простой язык описания схемы? :-) С производительностью и сложностью написания запросов тоже, конечно, у вас будут проблемы. В ообщем, поищите здесь все обсуждения этой темы, почитайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2007, 19:19 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34833332&tid=1544274]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
197ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 556ms |

| 0 / 0 |
