Какую структуру данных я должен использовать для этой конкретной проблемы? - PullRequest
0 голосов
/ 12 января 2011

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

Ответы [ 2 ]

2 голосов
/ 12 января 2011

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

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

class Type
{

  public SubTypeClass SubType  {get; set;}

  public string Id {get;set;}

}

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

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

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

1 голос
/ 12 января 2011

Редактировать

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

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

Конец редактирования

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

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

При вставке в columnData (которое представляет один кортеж Type / SubType / Source) это будет сделано следующим образом:

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

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

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

List<MyData> list;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...