哪一个更好创建一个Sql表

时间:2013-09-25 03:37:21

标签: sql performance tsql database-design sql-server-2008-r2

我将有两组数据将在我的表中插入相同的字段,它们根据插入的数据类型具有不同的含义

例如 我已插入

                 Albert 2013/1/1 (LoanMonth)
                 Albert 2013/1/1 (AccountinMonth)

他们有相同的领域,他们的待遇是不同的

我的第一个方法是 我的数据库中有两个日期

即:

ID nvarchar(20)
LoanDate smalldatetime
AccountingDate smalldatetime

如果我在结果表上面插入数据将是

    ID  LOANDATE    AccountingDate
Albert  2013/1/1    null
albert  null        2013/1/1

我的第二种方法是拥有状态ID

即:

ID nvarchar(20)
Date smalldatetime
StatusID bit

** 1用于会计0用于贷款日期

所以结果表就像

 ID      DATE      Status
Albert  2013/1/1     0
albert  2013/1/1     1 

问题是。两者中哪些更好/最好的做法?

非常感谢任何建议。 谢谢你。

1 个答案:

答案 0 :(得分:1)

我会使用两个不同的表。一个用于贷款,一个用于帐户。原因是您不希望将对象存储在行为不同的同一个表中。如果你每次做一个选择时必须做一个过滤器,只是为了得到贷款日期的50%的行,你很难分清它们并且在你的表中引入了很多。 SQL Sever大多数时候都会默认为慢速表扫描。由于这两个帐户在逻辑上是不同的,我认为将它们分开将使得更简洁的设计和更简单的SQL语句。

此外,除非您需要额外的字符,否则请勿使用N varchar。否则只是浪费空间。