2011-01-20 2 views
0

Я в основном реализовал реляционную СУБД, но я не думаю, что это подходит для следующего ... Я установил до 10^4 относительно сложных «объектов», которые состоят из «частей», нумерации до 10^2. Детали собраны в «сборки». Объекты выполняют на них операции для установления шаблонов между обеими частями и сборками и сравниваются с шаблонами, присутствующими в других объектах в базе данных.Какая модель базы данных?

Используя СУРБД, я мог бы просто объединить «части» в таблицу B, которые имеют очень малое значение из контекста (в отличие от номера позиции в счете-фактуре) и связывают их с родительскими «объектами» в таблице «Таблица». A 'или' 'в таблице C. Однако мне пришлось бы запускать SQL SELECT во всей этой таблице только для того, чтобы «сортировать» объекты, которые на самом деле являются только последовательным подмножеством в таблице «B».

В качестве альтернативы, все они могут быть в одной таблице с полем ParentID; отсутствие которого указывает на «объект», а не «сборку» или «часть».

Я думаю, что для каждого объекта можно было бы настроить VIEWS, чтобы «индексировать» таблицу как бы то ни было. Я не знаю, можно ли использовать или использовать 10 000 просмотров!

Есть ли еще одна модель, которую я должен изучить, которая может организовать данные в более благоприятном режиме? Данные будут представлять собой набор гериархальных объектов, состоящих из «сборок» других «сборок» или атомных «частей».

Может кто-нибудь указать мне в правильном направлении?

+0

Для чего вы собираетесь использовать данные? Является ли он тяжелым или тяжелым для записи? 10^4 или 10000 - не большой набор данных, так что вы пытаетесь избежать или решить? –

+0

К сожалению, я имел в виду 100 000 объектов и 100 частей каждый. Это вложение сборок, которые свертывают схему. Прочтите тяжелый для сложного соответствия шаблонов на основе критериев ввода. – Stephen

ответ

1

Если я читаю ваше описание объектной модели правильно, это звучит так, как будто:

  • 1-многие части в объекте
  • 1-многие детали в сборке

это звучит, как если бы вы изначально думал что-то вроде этого:

 
Assembly 
    ID int 

Object 
    ID int 

Part 
    ID int 

ObjectPart 
    ObjectID 
    PartID 

AssemblyPart 
    AssemblyID 
    PartID 

вы бы затем быть в состоянии найти запчасти для данной сборки:

SELECT P.* 
FROM Parts AS P 
INNER JOIN AssemblyPart AS AP ON AP.PartID = P.ID 
WHERE AP.AssemblyID = @SomeAssemblyID 

Я бы предложил сохранить четкие и отдельные объекты, а также избежать поля ParentID, которые диктуют тип сущности каждая строка. Я согласен с вами в том, что представление для каждого объекта не будет хорошим/удобным способом. Вы хотите выбрать SELECT из представления с предложением WHERE в AssemblyID или AssemblyName.

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

+0

Какой формат для схемы? Я действительно думал больше о строках: Объект ID Int Монтаж – Stephen

+0

1. Какой формат для схемы? 2. Я действительно думал больше в строках: Object {ID int} <- один для многих -> Assembly {ID int, ParentObject int} <- один для многих -> Часть {ID int, ParentAssembly int } 3. Я действительно не ожидаю проблем; Я просто хочу использовать правильный инструмент для работы, и я никогда не пробовал OODBMS или Heirarchal DBMS, если кто-то даже практически использует последнее больше (под впечатлением от дней COBOL). 4. Возможно, этот проект похож на то, как Ford будет хранить данные о машине. – Stephen

+0

Что-то вроде XML-базы данных (хотя я не понимаю, какая модель) реализована с использованием MonetDB/XQuery? – Stephen

0

Сетевая модель с RAIMA или Heirarchal с IBM IMS - это единственные доступные варианты (патентованные). Таким образом, это либо XML, как Zope, либо использование методов онлайн для реализации Network Model с использованием РСУБД.

0

Чтобы добавить к ответу Стивена, я работаю в Raima, и один из наших инженеров написал очень подробный пост на Network Database Model, как он работает, и различия по сравнению с реляционной моделью.

Смежные вопросы