Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Избыточность данных в коллекции, много повторяющихся полей 
:(
    Опции темы
ЛунныйОборотень
Дата 26.4.2011, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 12.11.2006

Репутация: нет
Всего: 1



Здравствуйте!
Возникла задача сделать бд по системе безопасности ,использую объектный подход.В частности, используя вложенные таблицы-коллекции, т.к. реляционные базы плохо справляются с вложенностью таблиц.

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

Код

 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-м уровнем вложенности(таблица в таблице).

Спасибо.

PM MAIL   Вверх
ЛунныйОборотень
Дата 26.4.2011, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 12.11.2006

Репутация: нет
Всего: 1



 smile 


PM MAIL   Вверх
bars80080
Дата 26.4.2011, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор воюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12009
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



Цитата(ЛунныйОборотень @  26.4.2011,  13:35 Найти цитируемый пост)
тогда как правло это одни и те же Производители например)

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


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

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



вообще, всегда можно вывернуться готовыми средствами. я бы не стал городить такие массивы, а создал бы что-то вроде такого:
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), тип параметра, прописанный где-нибудь ещё (в таблице определений параметров), и значение - числовое или текстовое

так, к примеру, в битриксе реализовано
PM MAIL   Вверх
ЛунныйОборотень
Дата 26.4.2011, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 12.11.2006

Репутация: нет
Всего: 1



Интересно,а если нужно будет добавить новый столбец? Нужно ли будет сильно перестраивать схему данных?
PM MAIL   Вверх
bars80080
Дата 26.4.2011, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор воюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12009
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



Цитата(ЛунныйОборотень @  26.4.2011,  21:03 Найти цитируемый пост)
Интересно,а если нужно будет добавить новый столбец? Нужно ли будет сильно перестраивать схему данных? 

вообще-то, смысл второй таблицы состоит в том, что в ней можно добавлять хоть два параметра для одного типа, хоть сто параметров для другого. количество никак не влияет.
PM MAIL   Вверх
Google
  Дата 20.5.2019, 16:26 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | NoSQL | Следующая тема »


 




[ Время генерации скрипта: 0.1728 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.