2015-06-23 3 views
2

Я делаю веб-страницу в ASP.NET MVC, которая сравнивает цены из разных магазинов.Объект базы данных с различными данными

У меня есть один-ко-многим с продуктами и магазинами, где SHOP имеет один PRODUCT и PRODUCT имеет много SHOP s, проблема заключается в том, что продукт является таким же, но цена отличается.

Пример:

3 shops sells one fork. 
Shop 1: $10 
Shop 2: $20 
Shop 3: $30 

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

+0

@Sachu не используйте 'инлайн code', чтобы выделить случайные условия. – CodeCaster

ответ

1

В идеале, что вы хотите это много-ко-многим между вашими Shop и Product лиц:

public class Shop 
{ 
    public int ShopId {get; set;} 
    public virtual ICollection<ShopProduct> ShopProducts {get; set;} 
} 

public class Product 
{ 
    public int ProductId {get; set;} 
    public string Name {get; set;} 
    public virtual ICollection<ShopProduct> ShopProducts {get; set;} 
} 

public class ShopProduct 
{ 
    public int ProductId {get; set;} 
    public int ShopId {get; set;} 
    public virtual Product Product {get; set;} 
    public virtual Shop Shop {get; set;} 
    public decimal Price {get; set;} 
} 

На приведенном выше примере, каждый Shop может иметь много Product с и каждый Product может существовать во многих Shop s. На стыке каждой комбинации Shop - Product вы указываете цену. Позвольте мне показать пример:

ID | Shop Name 
-------------- 
1 Shop 1 
2 Shop 2 
3 Shop 3 

ID | Product Name 
----------------- 
1 Fork 

Итак, теперь мы можем сделать это (ваш пример сверху):

ProductId | ShopId | Price 
---------------------------------------------------- 
1   1  10.00 <- fork for Shop 1 @ $10 
1   2  20.00 <- fork for Shop 2 @ $20 
1   3  30.00 <- fork for Shop 3 @ $30 

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

0

Было бы лучше, чтобы иметь отдельную таблицу для таких областей, как Price и имеющие в этом новой таблице т.е. один из product и другой из двух shopforeign keys.

1

Я хотел бы создать 3 таблицы для этого

Table Shop 
- ShopId (PK) 
- Name 
- ... 

Table Product 
- ProductId (PK) 
- Name 
- ... 

Table Price 
- ShopId (FK) 
- ProductId (FK) 
- Price 
- Date (optional if you want price history) 

Если вы хотите ценовую историю, то поля ShopId, ProductId, Date должны сформировать уникальное ограничение

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