我必须创建一个包含大量数据的数据库应用程序。所以现在我需要一个好的表/数据库设计。我有两个想法,但我对新的开放。第一:这与我将要保存的数据类似:
食物:牛肉
包含:
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
然后我会读完所有内容。
如果你能说出更快或更好的话会很好。
谢谢:)
答案 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)
然后前面的表值是这些表的函数'值。
您需要清楚地表达您的表格的谓词/含义(由上面的评论表达),以便用户可以查看当前情况并能够知道将哪些值放入您的表格中。