0

我有一个很少有表的数据库。我想知道,在数据库中创建表的最佳方法是什么。我的表同时包含字符串(文本)和数字(整数和双精度数)。我应该使用所有数据类型 text、int、double 等创建表,还是应该使用所有文本创建表并在插入和读取以供显示之前对其进行转换。

假设这是我的桌子......

sqlDB.execSQL("create table if not exists "+scriptName+"(dateofpurchase text, buyorsell text," +
                " purchasedquantity int, purchasedprice double, investmentwithoutbrokerage double," +
                " brokerage double, servicetax double, stt double, stampduty double, othertaxes double," +
                " investmentwithbrokerage double)");

如果我使用所有“文本”创建表并在需要时对字符串进行必要的转换,而不是创建具有不同数据类型的表。

sqlDB.execSQL("create table if not exists "+scriptName+"(dateofpurchase text, buyorsell text," +
                    " purchasedquantity text, purchasedprice text, investmentwithoutbrokerage text," +
                    " brokerage text, servicetax text, stt text, stampduty text, othertaxes text," +
                    " investmentwithbrokerage text)");

在将数据插入表之前,我会将所有值转换为字符串,并在从表中检索值时,(用于计算)我会将它们转换回各自的数据类型。为了在屏幕上显示,我可以直接将它们用作字符串。

如果我如上所述创建表,那么创建具有所有数据类型的表有什么缺点/优点?

4

1 回答 1

0

始终使用正确的数据类型创建表。在 SQLite 中,您不需要区分 BYTE 和 INTEGER 或 VARCHAR(n) 和 TEXT,数字和字符串之间存在显着差异。使用准确的类型可以使您的模型更易于理解,并且可以防止无效值,即数字字段中的字符串。从数字字段到字符串的转换很便宜;还要考虑您可能希望正确格式化货币值。因此,将它们存储为字符串不仅不切实际,而且可能会使您的代码严重复杂化(并破坏)。

于 2013-02-17T04:44:33.290 回答