首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通用mysql表设计建议

通用mysql表设计建议
EN

Stack Overflow用户
提问于 2017-08-30 11:26:33
回答 2查看 29关注 0票数 0

我得到了一些关于SLA (服务级别协议)的特定数据集,如下所示。这里x代表小时数。一旦一项任务在给定的时间范围内完成,特定级别的任务如下所示。

级别1-> x>=500级别2

我需要得到特定任务的级别,例如:-如果x为252,则该任务为4级。

我已经设计了以下格式的表,但我不会给出任何x值的级别的能力。请建议我最好的/准确的mysql表格设计。

EN

回答 2

Stack Overflow用户

发布于 2017-08-30 11:32:11

您的表设计隐式地假定一个顺序。在关系数据库中,行没有顺序。没有。

因此,更好的设计应该是这些栏:

代码语言:javascript
复制
serviceLevel
minimumHours 
maximumHours

然后,检索服务级别变得非常容易:

代码语言:javascript
复制
SELECT serviceLevel 
FROM <table> 
WHERE <hours> BETWEEN minimumHours AND maximumHours;
票数 0
EN

Stack Overflow用户

发布于 2017-08-30 11:35:58

您可以尝试为每个级别存储一个下限和一个上限。

代码语言:javascript
复制
Level | lower | upper
L1    | 500   | NULL
L2    | 400   | 500
L3    | 300   | 400
L4    | 200   | 300
L5    | 100   | 200

现在,如果您想运行建议的查询和搜索x = 252,可以这样做:

代码语言:javascript
复制
SET @x=252;

SELECT *
FROM yourTable
WHERE
    @x >= lower AND
    (@x < upper OR upper IS NULL);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45959167

复制
相关文章

相似问题

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