Я пытаюсь научиться структурировать классы (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.
Мои вопросы:
- Это хороший (достаточно) структура системы классов, чтобы отразить структуру базы данных?
- Если да, то может ли лучший способ создать объект TutorialTranslation в конструкторе учебника? -> Есть ли способ заставить Sqlite сделать это для меня?