2015-04-25 2 views
1

Я пытаюсь научиться структурировать классы (datamodel), чтобы отразить структуру базы данных.Комбинированный класс/таблица со средним значением

Исходя из веб-разработки В прошлом я не беспокоился о создании объектов, отражающих содержимое моей базы данных. Я всегда привык работать с ним как данные необработанного массива.

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

Table: Tutorial 
(PK)Id : Integer 
PositionX : Integer 
PositionY: Integer 

Table: Tutorial_Translation 
(FK)Tutorial_Id : Integer 
(FK)Language_Id : Integer 
Title : Text 
Text : Text 

Table: Language 
(PK)Id : Integer 
Title : Text 
Country : Text 

Теперь идея, как вы уже догадались, что я хранить текст учебники в middletable «Tutorial_Translation». Когда я хочу отобразить данный учебник, я бы включил значения «Tutorial_Translation» «Title» и «Text» в таблицу «Tutorial» на основе «Tutorial ID» и «Language ID», который был установлен заранее.

До сих пор так хорошо .. Теперь «проблема» здесь, я должен структурировать свои системные классы вокруг этих таблиц базы данных, чтобы я работал с ней безупречно, используя инфраструктуру SQLite.

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

Class: Tutorial 
Id : Int 
Position : Point 
_positionX : Int 
_positionY : Int 
TitleText : TutorialTranslation 

Class: TutorialTranslation 
Tutorial_Id : Int 
Language_Id : Int 
Title : String 
Text : String 

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

Мои вопросы:

  1. Это хороший (достаточно) структура системы классов, чтобы отразить структуру базы данных?
  2. Если да, то может ли лучший способ создать объект TutorialTranslation в конструкторе учебника? -> Есть ли способ заставить Sqlite сделать это для меня?

ответ

1
  1. Это хороший (достаточно) структура системы классов, чтобы отразить структуру базы данных?
    Насколько я могу судить, это выглядит хорошо для меня.

  2. Если да, то был бы лучший способ создать объект TutorialTranslation в конструкторе учебника? -> Есть ли способ заставить Sqlite сделать это для меня?
    Вам необходимо создать в своем проекте пользовательский класс, который вытащит соответствующую информацию из базы данных. Когда эти результаты будут получены, класс затем инициализирует свои поля данными. Я не знаю, как это делается в среде «web-development», из которой вы исходите, но в C#, вам нужно выполнить небольшую работу самостоятельно.

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