2011-01-12 14 views
0

Мне нужна помощь в определении структуры данных для этой проблемы. Данные имеют тип и подтип, а в основном подтип - нуль, но для очень немногих типов подтип имеет значение. Мне нужно прочитать данные из исходных таблиц, которые доступны в другой таблице. Какую структуру данных я могу использовать в приложении для хранения всей этой информации? Приложение не имеет информации о Type_id. его только для базы данных. Поэтому в структуре данных мы должны сохранить Type, SubType, Source Table. alt textКакую структуру данных я должен использовать для этой конкретной проблемы?

+1

Вы запрашиваете структуру данных или структуру классов? –

+0

Я не хочу использовать класс, потому что я пытаюсь настроить его. то естьмы должны иметь возможность добавить новый столбец в таблицу типов, и приложение должно забрать новый столбец. Я должен хранить все эти значения в кэше приложений. Поэтому всякий раз, когда исходная таблица запроса приложения для конкретной комбинации типа и подтипа I должна быть в состоянии получить ее из структуры данных. Я думал использовать 2 словаря. I для типа и другого для типа или подтипа и значения даст исходную таблицу. Но словарь не позволяет дублировать значения здесь в type_id 3 ad 4 type is C –

+0

Какие операции необходимо выполнять по этим данным? Как будут использоваться эти данные? – Davidann

ответ

2

Почему бы вам просто не использовать два класса?

Тип будет основным классом с полем экземпляра подтипа (который может быть пустым).

class Type 
{ 

    public SubTypeClass SubType {get; set;} 

    public string Id {get;set;} 

} 

Я не хочу, чтобы использовать класс, потому что я пытается сделать это configuratble. т.е. мы должны быть в состоянии добавить новый столбец в таблице типа и должны пикап приложение новый столбец

Я рекомендовал бы против этого, если не реальная потребность. Обычно, если таблица базы данных изменяется, что по-настоящему веской причине, и дизайн приложения должен быть пересмотрен ... если у вас есть таблицы, которые могут вырастить столбцы безумно, то ваш дизайн базы данных, вероятно, не очень хорош и, безусловно, не формализован (я предполагаю, что стандартные базы данных SQL).

Примите во внимание, что sub_type на самом деле не является отличным определением, и я предполагаю, что вы используете его в качестве примера для категоризации ... не пытайтесь создать структуру данных с серебряными пулями, как вы узнаете он приносит больше проблем, которые он решает. При хорошем дизайне, меняющемся один класс, если изменения в соответствующей связанной таблице данных не так важны, как наличие хорошего для всего класса, который едва работает лучше, чем прямые SQL-запросы.

1

Edit:

Получить кортежи Тип/подтип/Источник из БД с помощью запроса как:

SELECT table1.Type, table1.SubType, table2.Source from table1 JOIN table2 on table1.type_id = table2.type_id; 

End Edit

не зная, как данные , вы можете сделать следующее:

class MyData{ 
    HashMap<String, String> columnData; 
} 

При вставке в columnData (который представляет собой единый тип/подтип/Исходный кортеж), это будет сделано, как:

columnData.put("Type", type); 
columnData.put("SubType", subtype); 
columnData.put("Source", source); 

Таким образом, вам не нужно изменять структуру класса, когда добавляются новые столбцы к БД.

И затем, в основном приложении, вы можете использовать:

List<MyData> list; 

Конечно, этот ответ может меняться в зависимости от того, как будут использоваться эти данные.

+0

Как мы можем сопоставить Type-Sub-Type-Source i.e. Как мы можем найти/получить источник на основе типа и подтипа, подтип может быть нулевым для большинства случаев? Вход в список - это тип и подтип. и хотите получить источник? –

+0

Учитывая, что в вопросе о том, что Type_id недоступен для программы, я бы сгенерировал кортежи Type/SubType/Source с помощью SQL-запроса: SELECT table1.Type, table1.SubType, table2.Source from table1 JOIN table2 на table1.type_id = table2.type_id. Затем эти кортежи можно было подавать в программу. Кроме того, пожалуйста, укажите, что вы хотите найти/получить источник на основе типа/подтипа в вопросе. – Davidann

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