powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Подкиньте идею насчет организации БД...
16 сообщений из 16, страница 1 из 1
Подкиньте идею насчет организации БД...
    #34884563
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может немного не в эту ветку, но все-таки...Ситуация такая... Есть некая таблица с базовыми данными объектов... Допустим в ней хранятся документы... В процессе работы компании документам добавляются различные дополнительные параметры... Причем необязательно всем... Скорее даже наоборот... Как лучше организовать?
Делать еще одну таблицу для хранения расширенных данных? Или делать текстовые поля для расширенных атрибутов? Кто как делал?
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34885060
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разбить на таблицы!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 1 -я (tObject)
IdObject (pk)
ObjectName

 2 -я (tAttr)
IdObject (PK) (FK tObject.IdObject)
IdAttrType (PK) (FK tAttrType.IdAttrType)
Value

 3 -я (tAttrType)
IdAttrType (PK)
AttrTypeName
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34885258
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olzhas....
Хм.... Проблема в том, что как правило расширенных атрибутов не 1 или 2, а 10 или 20... Соответственно таблица с их параметрами в 10, а то и в 20 раз больше оригинала... Все бы ничего, но возникают серьезные проблемы при
select a.*, b.ext_par1, c.ext_par2........ DB2 приходится несколько раз просматривать эту большую таблицу....
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34885553
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTolzhas....
Хм.... Проблема в том, что как правило расширенных атрибутов не 1 или 2, а 10 или 20... Соответственно таблица с их параметрами в 10, а то и в 20 раз больше оригинала... Все бы ничего, но возникают серьезные проблемы при
select a.*, b.ext_par1, c.ext_par2........ DB2 приходится несколько раз просматривать эту большую таблицу....
Не совсем понял чего вы хотите.
Как я понял у вас есть таблица которая хранит описания документов. Так?
Но так как количество атрибутов перемено(т.е. количество столбцов в БД) но вы боитесь что слишком много столбцов будет лишним, а слишком мало может не хватить для хранения информации.
Правильно я вас понял?
Что за b.ext_par1, c.ext_par2 от куда вы взяли таблицы b,c?

В моем примере если вы хотите получить документ со всеми его атрибутами нужно выполнить что то типа такого
Код: plaintext
1.
2.
3.
4.
5.
6.
select 
tObject.objectName,
tAttrType.AttrTypeName, 
tAttr.value 
from tAttr  
inner join tObject  on (tObject.IdObject=tAttr.IdObject) 
inner join tAttrType on(tAttrType.IdAttrType = tAttr.IdAttrType)
Таким образом вы получите документ с таким количеством атрибутов на сколько вам позволит ваша таблица.
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34885578
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем так.... Я хочу получить запрос:
ObjectName | Value1 | Value2
-----------------------------
| |

Ну а сам запрос что-то вроде....

select a.ObjectName, Coalesce(b.Value,'') as Value1, Coalesce(c.Value,'') as Value2
from tObject a left outer join tAttr b on a.IdObject = b.IdObject and b.IdAttrType = ?
left outer join tAttr c on a.IdObject = c.IdObject and c.IdAttrType = ?

Вот есть мнение, что такие запросы начинают тормозить при большом количестве записей...
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34885671
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не надо много раз одну и ту же таблицу соединять.
Выбирайте все атрибуты сущности, а потом инвертируйте разультат.
Это можно делать либо на клиентском приложении, либо хранимой процедурой.
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34885693
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А пример SQL не подскажите?
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34885770
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточню вопрос... Мне бы view такой состряпать.... Чтобы без ХП и всякого прочего... Тут вся "фишка" в запросе....
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34885901
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTУточню вопрос... Мне бы view такой состряпать.... Чтобы без ХП и всякого прочего... Тут вся "фишка" в запросе....Вы не составите view на динамисески изменяющееся кол-во параметров.
Я бы вам дал свою процедуру, но она написана на общий случай (использует внутри java-функцию) и немного усложнена.
В кратце, делается это примерно так:
Пусть есть:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
OID	PID     VALUE
----	---	-----
1	1	'prop1'
...
1	N	'propN'

2	1	'prop1'
...
2	M	'propM'

...
OID - id объекта
PID - id свойства
Тогда динамически составляется и выполняется запрос типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select 
  oid
, max(case when pid= 1  then value else cast(null as varchar( 10 )) end) p1
...
, max(case when pid=z then value else cast(null as varchar( 10 )) end) pZ
from t
group by oid;
Динамически, потому что для каждого различного из всего набора записей значения в поле PID (или для каждого возможного значения свойства) дожна быть сгенерирована строка вида
Код: plaintext
, max(case when pid=Z then value else cast(null as varchar( 10 )) end) pZ
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34885921
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну мне нужно выбрать строго фиксированное число параметров... Поэтому Ваш запрос смогу адаптировать...
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34885934
gals
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://nash.cod.ru/viewtopic.php?t=25192 сюда сходи
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34885940
gals
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, какую-то лажу послал...
Посмотри тему Re: Подскажите как решить подобную задачу с помощью sql
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34886070
db2 9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORT... Допустим в ней хранятся документы... В процессе работы компании документам добавляются различные дополнительные параметры... Причем необязательно всем... Скорее даже наоборот... Как лучше организовать?

если db2 9, то может быть просто xml?
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34886257
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTНе совсем так.... Я хочу получить запрос:
ObjectName | Value1 | Value2
-----------------------------
| |

Ну а сам запрос что-то вроде....

select a.ObjectName, Coalesce(b.Value,'') as Value1, Coalesce(c.Value,'') as Value2
from tObject a left outer join tAttr b on a.IdObject = b.IdObject and b.IdAttrType = ?
left outer join tAttr c on a.IdObject = c.IdObject and c.IdAttrType = ?

Вот есть мнение, что такие запросы начинают тормозить при большом количестве записей...
Мне кажется вы усложняете себе жизнь. :)
Почему вы хотите получить данные именно в таком виде?
Нарушается вся логика Реалиционной БД.
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34886570
DB2Adventurer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попытаться вынести основные свойства документа, по которым будет поиск и другие вычисления в столбцы таблицы. Мутирующие параметры положить в поле XML( лучше всего) или CLOB. Чисто для истории и печати документов. Если есть возможность то лучше весь документ хранить в xml, для db2 это не проблема.
...
Рейтинг: 0 / 0
Подкиньте идею насчет организации БД...
    #34887660
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... Насчет XML надо крепко подумать... Может быть что-то в этом есть...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Подкиньте идею насчет организации БД...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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