2010-08-16 2 views
0

Учитывая дизайн базы данных ниже, как бы вы ее моделировали? Тип адреса - бизнес/дом и т. Д., А PersonId - в таблице адресов, потому что для одного лица существует много адресов.Разработка домена и NHibernate

я бы большинство из них что-то вроде:

public class Person 
{ 
    public virtual int PersonId { get; set; } 
    public virtual string FirstName { get; set; } 
    public virtual string LastName{ get; set; } 
    public virtual DateTime DOB{ get; set; } 
    public virtual IList<Address> Addresses { get; set; } 
} 


public class Address 
{ 
    public virtual int AddressId{ get; set; } 
    public virtual Person Resident{ get; set; } 
    public virtual AddressType Location{ get; set; } 
    public virtual string PostalCode{ get; set; } 
    public virtual string FullAddress{ get; set; } 
} 

public class AddressType 
{ 
    public virtual int AddressTypeId{ get; set; } 
    public virtual string Description{ get; set; } 
    public virtual IList<Address> Addresses { get; set;} 
} 

однако я понятия не имею, если это уместно. Я всегда делал свои модели с объектами и никогда не покидал int. NHibernate Mapping будет легко заменять их объектами, а затем ленивыми/нетерпеливо загружать их, поэтому я просто считаю, что это лучший вариант. Мнения?

Database Design

+0

Ваш домен прекрасен – 2010-08-16 20:45:18

ответ

0

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

1

Домен выглядит чистым.

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

0

Я предлагаю конвертировать отношения Address-Person и Address-AddressType в пути. Это не очень удобно, если каждый адрес теперь его Личность (резидент), и каждый AddressType теперь является его адресом (адресами). Сделав это, вы будете намного проще.

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

0

Я бы поменял Address и AddressType отношение много к одному. Это на самом деле взаимно однозначно, и в этом случае AddressType будет входить в таблицу Address в качестве поля. Это лучшая форма ИМХО.

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