构造一个包含许多列的表

本文关键字:包含许 一个 | 更新日期: 2023-09-27 18:13:29

在SQL Server数据库中,我有一个大约有200个项目的表:

create table dbo.Reports
(
  Id int identity not null,
  HealthRating int not null, --- { One of: NoProblems; TemporaryChange; ... }
  Hobbies int not null, --- { Many of: None, Running, Tennis, Football, Swimming }
  HobbiesOthers nvarchar (400) null
  -- More 100 columns
);  

所以我有大约200列的类型:INT, NVARCHAR, BIT和DATETIME。

一些INT列作为healthring来存储一个值。

其他人喜欢爱好,以容纳许多项目…并且通常有一个额外的列来存储其他选项,如text (nvarchar)…

我应该如何构建这个表?我看到3个选项:

  1. 为每个属性设置一列,因此:

    HealthRatingNoProblems bit no null,

  2. 创建查找表的健康,爱好,…我可能会以60多张表结束…

  3. 使用实体框架中现在支持的枚举和标志枚举,并在Int列中存储一个选择和多个选择项。

你有什么建议吗?

构造一个包含许多列的表

无论如何——请!使那张可怜的桌子正常化。如果你最终有50或60张桌子,那就顺其自然吧。这就是设计。如果用户有爱好,则该信息将显示在hobby表中。如果他有三个爱好,那么在"爱好"表中将有三个条目。如果他没有任何爱好,爱好表里就什么都没有。

对于所有这些时间,您只对爱好感兴趣,您只将Hobby表与Reports表结合在一起,而不涉及所有其他表。你不能用一个巨大的,包含所有东西的行来做到这一点。在那里,如果你只想看兴趣信息,你仍然需要阅读整行,把所有你不想要的数据都带进去。为什么要读取你将要丢弃的数据呢?