【发布时间】:2011-09-17 09:01:51
【问题描述】:
我有一个对象列表,每个对象都有自己的 id,我需要在数据库中为它们创建一个表。使用它们的 id(因为它们是唯一的)作为表中的主键是个好主意,但有一个问题。除了一个对象之外,所有 id 都是整数 - 它有 2 个子对象,id 为 142.1 和 142.2,因此 id 列表为 140, 141, 142.1, 142.2, 143...
现在,如果我选择双精度作为主键类型,那么它将存储不必要的 6 个字节(因为双精度是 8 个字节,INT 是 2)只支持两个双精度数字,我不能选择 INT。那么如果我不能更改对象列表,我应该使用什么类型呢?
【问题讨论】:
-
不是一个好主意。您永远不应该将逻辑放入主键中。您应该将有关子对象的信息放在单独的列中。
-
int是 4 个字节而不是 2。(smallint虽然是 2) -
我知道,但我现在不能改变任何东西,我需要用我所拥有的来解决这个问题。
-
马丁,我看了这张表w3schools.com/sql/sql_datatypes.asp
-
@Sergey,它说该网站上有 4 个字节。您可能查看了 Access 数据类型。 SQL Server 数据类型几乎位于页面底部。
标签: sql-server primary-key sqldatatypes