首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建多个锁定表Vs。创建单个查找表

创建多个锁定表Vs。创建单个查找表
EN

Stack Overflow用户
提问于 2013-06-28 16:55:35
回答 3查看 527关注 0票数 3

我有多个表来存储我们公司的资产,这些表包括:

·车辆

·服务器

·PC

·家具

现在,对于我想要创建的每个资产,创建一个查找表来存储资产模型,例如,在创建新PC时,用户将选择型号“Dell vostro成就350”,等等。但是哪个更好;定义四个查找表(例如vechicle_model、Server_models、Pc_models、furniture_model),或者定义一个查找表并用一列描述它的类型(type = PC )

问候

EN

回答 3

Stack Overflow用户

发布于 2013-06-28 17:03:32

使用单独的查询表,尽管它们可能具有相似性-除非您a)希望允许某人将Dell vostro 350存储为家具类型,或者b)希望在数据库中具有明显更复杂的约束,以防止记录此类交叉选择。

事实上,您提出的单一查找表是如此著名,它甚至获得了自己的首字母缩写- OTLT,即One True lookup Table的缩写。如果你愿意搜索它,它几乎总是与“反模式”或“初学者错误”相提并论。

票数 6
EN

Stack Overflow用户

发布于 2013-06-28 19:01:51

这些表是否共享相同的列、constraints和物理存储?

  • 如果是,它们应该是一个表。
  • 如果不是,请将它们分开。

请注意,上述条件实际上比乍一看更难满足。例如,在以下情况下,应将表分开保存:

  • 任何键对于每个表都应该是唯一的,而不是所有表中的行的联合。
  • 外键存在于一个表中但不存在于另一个表中,或者外键引用了一个表但不引用另一个表。
  • 检查约束条件存在于一个表中但不存在于另一个表中。这甚至包括诸如NOT NULL之类的简单内容。锁类型或宽度is different.
  • Triggers are different.
  • Permissions are different.
  • Table-level locks需要是taken.
  • Tables需要以不同的方式进行群集或分区,或者只是存储在不同的磁盘上或在某些其他物理存储参数(取决于DBMS).
  • Etc...

)上有所不同

因此,您可能需要保持表的分离。

票数 2
EN

Stack Overflow用户

发布于 2013-06-28 17:00:51

如果您只打算使用查找,我会选择单表解决方案。

如果您计划根据资产模型存储有关资产的其他信息,例如车辆是汽油/柴油,或者PC是台式机还是笔记本电脑,那么多表解决方案可能会工作得更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17360871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档