在列中饮用新表或字符串的成分?

时间:2012-02-16 17:56:39

标签: database performance windows-phone-7 windows-phone-7.1

我正在考虑我的申请,我想存储有关饮品的数据。现在我在想什么是最好的,如果我保存成分就像在桌子上的nvarchar列与饮料或如果我创建新的成分表和创建一对多的关系?我希望数据库只是只读,我希望按成分选择过滤器。那么Windows手机的最佳方式(性能)呢?如果新表是更好的选择,我应该使用EntitySet,EntityRef,我是对的吗?我会为表格中的每一种新成分排序吗?假设我有100个饮料,平均每个饮料有4个成分,所以我在第一个表100个和第二个cca 400个?谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

实际上,提出的两种解决方案都是错误的。饮料可以含有许多成分,并且可以在许多饮料中使用一种成分。因此,我们在这里有多对多的关系。对此进行建模的正确方法如下(我为其添加数据更容易理解):

成分(PK:Id)

+----+--------------------+
| Id |        Name        |
+----+--------------------+
|  1 | Water              |
|  2 | Sugar              |
|  3 | Coffe              |
|  4 | Virgin Islands Tea |
|  5 | Ice                |
+----+--------------------+

饮品(PK:Id)

+----+-------------+
| Id |    Name     |
+----+-------------+
|  1 | Black Coffe |
|  2 | Tea         |
|  3 | Ice Tea     |
+----+-------------+

Drinks_Ingredients(PK:Drink_Id,Ingredient_Id)

+----------+---------------+------------+
| Drink_Id | Ingredient_Id | Proportion |
+----------+---------------+------------+
|        1 |             1 |         70 |
|        1 |             2 |         10 |
|        1 |             3 |         20 |
|        2 |             1 |         90 |
|        2 |             4 |         10 |
|        3 |             1 |         80 |
|        3 |             4 |         10 |
|        3 |             5 |         10 |
+----------+---------------+------------+

我正在添加此Proportion列,以向您展示如何添加依赖于这对饮料成分的数据。现在,如果您担心表格的大小,它将会非常小,因为只有具有更复杂数据类型(varchars)的表格将是成分和饮料表格,这些表格将具有最少量的记录可能:每种饮料一种,每种成分一种。

如果你仍然怀疑看看这个例子,你会得到它:)

答案 1 :(得分:0)

我会为带有描述和身份证的食材做一张桌子,并将ids存放在饮料桌中,因为它是优雅的方式。对于100种饮料,您不会看到性能差异。