Избыточность данных в коллекции

 
0
 
NoSQL
ava
ЛунныйОборотень | 26.04.2011, 14:35
Здравствуйте!
Возникла задача сделать бд по системе безопасности ,использую объектный подход.В частности, используя вложенные таблицы-коллекции, т.к. реляционные базы плохо справляются с вложенностью таблиц.

Получилось что -то вроде такого.


Systema_Ingenernoi_Ukreplennosty=
{
"Zamki" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : ""
},
"Turnikety" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Napriagenie" : "",
"Rabochaia_Temperatura" : ""
},
"Kalitki" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Napriagenie" : "",
"Rabochaia_Temperatura" : ""
},
"Shlagbaumy" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Dlina_Strely" : "",
"Type_Strely" : "",
"Klass_Zashity" : ""
}
}
{
"Izveshateli_Pogarnye" : {
"Teplovyi" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Temperatura_Ekspluatatsii" : "",
"Input_V" : "",
"Markirovka_Vzryvpzashity" : ""
},
"Dymovye" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Input_v" : "",
"Chuvstvitelnost_Izvesh" : "",
"Tok_DegRegim" : "",
"Tok_Otveta" : ""
},
"Avtonomnye" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Input_v" : "",
"Yroven_Gromkosty" : "",
"Razmery" : {
"Dlina" : "",
"Shirina" : "",
"Vysota" : ""
},
"Raboch_Temperatura" : "",
"Zashitnaia_Ploshad" : ""
}
},
"Izveshateli_Oxrannye" : {
"Passivnye_Infrakrasnye_Izveshateli" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Input_V" : ""
},
"Ylichnye_Passivnye_Infrakrasnye_Izveshateli" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Input_V" : "",
"Rabochaia_Temperatura" : ""
},
"Magnitnye_Izveshateli" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Razmery" : {
"Dlina" : "",
"Shirina" : "",
"Vysota" : ""
},
"Rasst_Srabatyvania" : "",
"Rabochaia_Temperatura" : "",
"Input_V" : "",
"Vibratsionnye_Nagruzki" : ""
},
"Sovmeshennye_Izveshateli" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Zona_Obslugivania" : "",
"Rabochaia_Temperatura" : "",
"Input_V" : "",
"T_Gotovnosty" : "",
"Razmery" : {
"Dlina" : "",
"Shirina" : "",
"Vysota" : ""
},
"Tok_DegReg" : "",
"Tok_Otveta" : ""
},
"Mikrovolnovye_Izveshateli" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Dalnost_Deiastvia_MAX" : "",
"Dalnost_Deistvia_MIN" : "",
"Ploshad_Zony_Obnarugenia" : "",
"Input_V" : "",
"Tok_Potreblenia" : "",
"Razmery" : {
"Dlina" : "",
"Shirina" : "",
"Vysota" : ""
},
"Rabochaia_Temperatura" : ""
},
"Vibratsionnye_Izveshateli" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Input_V" : "",
"Tok_Potgreblenia" : "",
"Rabochaia_Temperatura" : "",
"T_Trevogi" : "",
"Razmery" : {
"Dlina" : "",
"Shirina" : "",
"Vysota" : ""
},
"Memory_Trevogi" : "",
"Trevoga_Output" : "",
"Vlagnost" : ""
},
"Aktivnye_Infrakrasnye_Izveshateli" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Ygol_nastroiki" : "",
"Metod_Detektsii" : "",
"Dalnost_Vnutr" : "",
"Dalnost_MAX" : ""
},
"Emkostnye_Izveshateli" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Porogovaia_Chuvstvitelnost" : "",
"Diapazony_Onnarugenia_Skorostei_Cheloveka" : "",
"MAX_Emkost_Chuvst_Elementa" : "",
"Stepen_Zashity" : ""
}
},
"Trevognaia" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Input_V" : ""
},
"Rechevoe" : {
"Name" : "",
"Proizvoditel" : "",
"Ypakovka" : "",
"Massa" : "",
"Price" : "",
"Opisanie" : "",
"Input_V" : ""
}
}


Но получается большая избыточность(получается что для каждой таблицы свои поля типа Имя.Производитель и тд, тогда как правло это одни и те же Производители например)
+ насколько я понимаю.данные никак не связаны.

Можно ли как-то решить эти проблемы?Или это нормально для объектной базы?

Я специально привел самую большую коллекцию, с самым глубоким уровнем вложенности.Если хотите,могу привести коллекцию с 1-м уровнем вложенности(таблица в таблице).

Спасибо.
Comments (4)
ava
ЛунныйОборотень | 26.04.2011, 16:01 #
smile

ava
bars80080 | 26.04.2011, 19:21 #
Цитата (ЛунныйОборотень @ 26.4.2011, 13:35 findReferencedText)
тогда как правло это одни и те же Производители например)

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


Цитата (ЛунныйОборотень @ 26.4.2011, 13:35 findReferencedText)
насколько я понимаю.данные никак не связаны.

а кто лучше вас знает, как там связаны данные?



вообще, всегда можно вывернуться готовыми средствами. я бы не стал городить такие массивы, а создал бы что-то вроде такого:
table_main
id int, Name varchar, group int, Proizvoditel int, Ypakovka int, Massa decimal, Price decimal

table_extension
id int, main_id int, type smallint, value_int int, valuy_text varchar

то есть главная таблица с основными параметрами, существующими почти для всех. и вторая таблица где указывается идентификатор элемента из первой таблицы (table_extension.main_id = table_main.id), тип параметра, прописанный где-нибудь ещё (в таблице определений параметров), и значение - числовое или текстовое

так, к примеру, в битриксе реализовано
ava
ЛунныйОборотень | 26.04.2011, 21:03 #
Интересно,а если нужно будет добавить новый столбец? Нужно ли будет сильно перестраивать схему данных?
ava
bars80080 | 26.04.2011, 23:03 #
Цитата (ЛунныйОборотень @ 26.4.2011, 21:03 findReferencedText)
Интересно,а если нужно будет добавить новый столбец? Нужно ли будет сильно перестраивать схему данных?

вообще-то, смысл второй таблицы состоит в том, что в ней можно добавлять хоть два параметра для одного типа, хоть сто параметров для другого. количество никак не влияет.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
advanced
Submit