首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理条件字段?

如何处理条件字段?
EN

Database Administration用户
提问于 2014-04-30 15:32:24
回答 1查看 830关注 0票数 0

我正在为我的公司设计一个数据库,以协助资产管理。我不是数据库管理员,但我以前在数据库方面有过一些经验。我们的资产被用于各种工作地点或仓库或供应商设施的现场。我的问题涉及处理表可以完成两个字段之一的情况的最佳实践。在我的情况下,资产可以在商店或工作。

我考虑处理这个问题的方式是添加一个标志字段,该标记字段指示资产是否处于工作状态。如果为真,那么JOB_ID列应该有一个值,SHOP_ID应该为null。如果是假的,则应该是相反的。这些ID将引用适当的作业表和车间表。

我的问题是,我是不是从正确的方向来处理这个问题?这些案例是否有最佳做法?我假设追踪库存远非一个新问题。

以下是资产表的模式,为了简洁起见排除了一些列:资产(ASSET_ID、IS_ON_JOB、JOB_ID、SHOP_ID)

EN

回答 1

Database Administration用户

回答已采纳

发布于 2014-05-01 13:25:04

你的做法是合理的。在ASSET表上设置一个check约束,以确保在任何时间点上都会精确设置一个外键。

标志是多余的,因为相同的信息是由哪个外键是NULL捕获的。保留它只会增加应用程序的维护开销。最终它会变得不一致,然后你会有一个混乱的解决办法。

另一种设计是将来自SHOPJOB的一些信息合并到LOCATION表中。然后模式变成

代码语言:javascript
运行
复制
ASSET(ASSET_ID, LOCATION_ID)
LOCATION(LOCATION_ID, NAME)
JOB(JOB_ID, LOCATION_ID)
SHOP(SHOP_ID, LOCATION_ID)

如您在问题中所述,在LOCATION中为每个“作业站点或.仓库或供应商设施”放置一行。

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

https://dba.stackexchange.com/questions/64228

复制
相关文章

相似问题

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