Проектирование приложений - таблицы базы данных и интерфейсы

У меня есть база данных с таблицами для каждого объекта в системе. например, PersonTable имеет столбцы PersonId, Имя, HomeStateId. Существует также таблица для 'справочных данных' (т.е. состояния, страны, все валюты, и т.д.) данные, которые будут использоваться для заполнения полей выпадающего списка. Эта ссылочная таблица будет также использоваться так, чтобы HomeStateId PersonTable был внешним ключом к ссылочной таблице.

В приложении C# у нас есть интерфейсы и классы, определенные для объекта. например, PersonImplementationClass: IPersonInterface. Причина того, чтобы иметь интерфейсы для каждого объекта состоит в том, потому что фактический класс объекта будет хранить данные по-другому в зависимости от стороннего продукта, который может измениться.

Вопрос, должен интерфейс иметь свойства для Имени, HomeStateId и HomeStateName (который будет получен от ссылочной таблицы). ИЛИ разве интерфейс не должен выставлять структуру базы данных, т.е. Не иметь HomeStateId и просто иметь Имя, HomeStateName?

7
задан Brian Tompsett - 汤莱恩 19 December 2015 в 13:04
поделиться

3 ответа

Я бы сказал, что вы на правильном пути, когда думаете о именах собственности!

Модель ваших классов, как вы бы в реальном мире.

Забудьте шаблоны базы данных и соглашения о именах именных именных ключей в целом. У человека есть город, а не город.

Это будет до вашего слоя данных для отображения и заполнения свойств этих объектов во время выполнения. У вас должна быть свобода выразить свое намерение и представление объектов «Real World» в вашем коде и не застрять в вашу реализацию БД.

4
ответ дан 7 December 2019 в 07:45
поделиться

Изменение выравнивания заголовка группового блока приведет к использованию элементов управления, не соответствующих ОС.

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

-121--3612801-

Можно попробовать использовать компонент dlSoft dBarcode.NET .

Это автономный компонент, поэтому необходимо создать код и внедрить его в отчет.

-121--4076947-

Это может помочь немного разделить дизайн.

Для каждого объекта используйте два класса:

  • Один, который работает с операциями базы данных над объектом (где можно поместить идентификаторы)
  • Один из них является простым объектом данных (где у вас будут стандартные поля, которые на самом деле что-то значат)

Как упоминалось @ womp, если ваша устойчивость объекта будет только в базах данных, настоятельно подумайте об использовании ORM, чтобы в конечном итоге не свернуть свой собственный.

0
ответ дан 7 December 2019 в 07:45
поделиться

В любом случае приемлемо, но они оба имеют свои плюсы и минусы.

Первый способ (у субъектов IDS) анализируют шаблону ActiveERecord , где ваши объекты являются тонкие обертки по структуре базы данных. Это часто является гибким и быстрым способом структурирования вашего слоя данных, потому что ваши объекты имеют свободу напрямую работать с базой данных для выполнения доменных операций. Недостаток заключается в том, что когда изменяется модели данных, ваше приложение может потребоваться обслуживание.

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

Это большой выбор, и не следует воспринимать слегка. Это действительно зависит от требований вашего проекта и размера, который будет его потреблять.

3
ответ дан 7 December 2019 в 07:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: