什么MySQL表设计在性能上更好?

时间:2016-06-02 15:04:37

标签: mysql database-design

我必须创建一个包含大量数据的数据库应用程序。所以现在我需要一个好的表/数据库设计。我有两个想法,但我对新的开放。第一:这与我将要保存的数据类似:

  

食物:牛肉

     

包含:

     

Brom:百分比:12%///克:0.23

     

Uran:百分比:1%///克:0.003

     

黄金:百分比:0.03%///克:0.02

     

等等

现在我看到了两个设计:

  

对于每个元素(Brom,Gold,...),我创建了一个类似" brom_tbl,gold_tbl"以及显示名称和全局ID的表(gbl_tbl)。当我想要阅读所有数据时,我只是将它们加在一起。

这是第二个:

  

我只有一张表如下:

     

名称| brom_percent | brom_gram | gold_percent | gold_gram | ...

     

牛肉| 12 | 0.23 | 0.03 | 0.02

     

然后我会读完所有内容。

如果你能说出更快或更好的话会很好。

谢谢:)

2 个答案:

答案 0 :(得分:0)

如何创建这样的两个表:

一个用于食物..

create table Food
(
 FoodId INT NOT NULL AUTO_INCREMENT,
 Name   varchar(1000)
)

一个属性:

create table Attributes
(
    AttributeId INT NOT NULL AUTO_INCREMENT,
    Description varchar(1000),
    FoodId      INT, /* Referencds FoodId in Food table */
    Value       Decimal,
    FOREIGN KEY (FoodId)
       REFERENCES Food(FoodId)
)

您可以创建一个属性表,其中包含属性的名称和其他值,例如描述,化学符号。

然后让FoodAttribute表包含每个Food / Attribute对的记录..经典的多对多连接。

答案 1 :(得分:0)

直截了当的设计是

-- food FOOD has element ELEMENT associated with PERCENT percent and GRAMS grams
Food(food, element, percent, grams)

你不能再解释那些有助于我们提供更合适设计的内容。显然,重量是食物中的元素。假设您的GRAMS是某些标准重量食物中元素的重量,并且给定元素与每标准重量食物的标准重量相关。然后:

-- standard weight of food FOOD is PERCENT percent element ELEMENT
Food(food, element, percent)
-- element ELEMENT has weight GRAMS grams per standard weight of food
Weight(element, grams)

然后前面的表值是这些表的函数'值。

您需要清楚地表达您的表格的谓词/含义(由上面的评论表达),以便用户可以查看当前情况并能够知道将哪些值放入您的表格中。