- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 SQL 的Where子句进行数据库设计。我的应用程序是一个工作流引擎,允许最终用户指定 SQL 的 where 子句。目前我的应用程序支持创建 where 子句,如下所示:
<input type="text" name="clause-name" placeholder="condition name here" />
<br/>
<br/>
<input type="radio" name="where">Complex</input>
<br/>
<div style="display:inline-block">
<select>
<option value="1">ch4 ≥ 1.5</option>
<option value="2">locality = chino</option>
<option value="3">postal_code like [0-9]{5}</option>
<option value="4">date ≤ 2015-12-31</option>
<option value="5">chino and ch4</option>
<option value="6">postalcode and date</option>
<option value="7">chino or postalcode</option>
</select>
<select>
<option>AND</option>
<option>OR</option>
</select>
<select>
<option value="1">ch4 ≥ 1.5</option>
<option value="2">locality = chino</option>
<option value="3">postal_code like [0-9]{5}</option>
<option value="4">date ≤ 2015-12-31</option>
<option value="5">chino and ch4</option>
<option value="6">postalcode and date</option>
<option value="7">chino or postalcode</option>
</select>
</div>
<br/>
<input type="radio" name="where">Simple</input>
<br/>
<div style="display:inline-block">
<select>
<option>ch4</option>
<option>locality</option>
<option>postal_code</option>
<option>date</option>
</select>
<select>
<option>≤</option>
<option><</option>
<option>≥</option>
<option>></option>
<option>≠</option>
<option>=</option>
<option>like</option>
</select>
<input type="text" placeholder="value here" />
</div>
<br/>
<br/>
<button>Create Condition</button>
在其他页面上,我有一个选择下拉列表,您可以在其中选择创建的子句。问题是我为这个场景设计的数据库表。目前情况如下:
WhereTable(id, name, feature, op, value, condition1, jointype, condition2)
这样id
是主键且 condition1, condition2
是 self 的外键。条件 (ch4 >= 1.5 and locality = chino) or (postal_code like [0-9]{5} and date <= 2015-12-31)
的示例表如下:
table, th, td{
border: 1px solid black;
}
<table>
<tr>
<th>id</th>
<th>name</th>
<th>feature</th>
<th>op</th>
<th>value</th>
<th>condition1</th>
<th>jointype</th>
<th>condition2</th>
</tr>
<tr>
<td>1</td>
<td>ch4≥1.5</td>
<td>ch4</td>
<td>>=</td>
<td>1.5</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr>
<td>2</td>
<td>locality=chino</td>
<td>locality</td>
<td>=</td>
<td>chino</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr>
<td>3</td>
<td>postal_code like [0-9]{5}</td>
<td>postal_code</td>
<td>like</td>
<td>[0-9]{5}</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr>
<td>4</td>
<td>date≤2015-12-31</td>
<td>date</td>
<td><=</td>
<td>2015-12-31</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr>
<td>5</td>
<td>chino and ch4</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>1</td>
<td>and</td>
<td>2</td>
</tr>
<tr>
<td>6</td>
<td>postalcode and date</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>3</td>
<td>and</td>
<td>4</td>
</tr>
<tr>
<td>7</td>
<td>chino or postalcode</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>5</td>
<td>or</td>
<td>6</td>
</tr>
</table>
有什么方法可以优化这个表设计以减少空值吗?我使用 MySQL 作为我的数据库服务器。
最佳答案
啊,现在我想我明白了。
用面向对象的术语来说,你有一个像这样的继承结构
Formula
int id
String name
BasicFormula extends Formula
String variable
Operator operator // something like <=, contains, ...
String value
CompoundFormula extends Formula
Formula leftFormula
Operator operator // and, or
Formula rightFormula
现在,要将这样的构造映射到数据库,有不同的策略。使用每类层次结构表是完全合法的,这就是您所建议的,只需拥有一个包含两个特化属性的表即可。详细描述见https://docs.jboss.org/hibernate/orm/3.5/reference/en/html/inheritance.html 。在许多情况下,只有一张表是最简单的解决方案。当然,任何查询数据库的人都必须知道如何解释该方案,但这也适用于其他策略。
关于mysql - 优化 "SQL Where Clause"的表设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36277816/
MySQL 首先执行什么:WHERE 子句还是ORDER BY 子句? 我问的原因是确定我是否应该为给定的列添加索引。 我有如下表格: | Column | Type | Inde
如果您要在 SQL 查询中连接多个表,您认为将连接语句放在什么地方比较好:在 FROM 子句或 WHERE 子句中? 如果您打算在 FROM 子句中执行它,您如何格式化它以使其清晰易读? (我说的是一
mysql新版本与only_full_group_by的问题 我需要使用 Group by (col_id) 和 order by (date) 获取表值我在 mysql 中的代码如下: SELECT
获取异常: With-clause referenced two different from-clause elements 使用以下实体执行以下查询时: @Entity public class
我已经编写查询以从作为表 tbl_states 的主键的 tbl_summer 表中获取状态为事件的不同 stateID。 我想要按字母顺序列出不同的州名。实际上我是从以下查询中得到的,但字母顺序没有
我试图找出以下 2 个查询之间的区别 查询 1: 其中我在子句中给出了条件 'Orders.OrderID != null' SELECT Customers.CustomerName, Orders
我有两个模型: const User = sequelize.define('User', { email: { type: DataTypes.STRING, },
我正在尝试在我的 JPA 存储库之一中使用内部联接进行选择 查询: @Query(value = "select wm.WagerIdentification, wm.BoardNumber, wm.
我正在尝试从表中获取记录总数并使用以下 MySQL 查询: SELECT COUNT(*) AS cnt FROM `info` WHERE 1 GROUP BY FROM_UNIXTIME(sign
我开始使用 Hibernate 并且我正在使用 HQL,使用一些连接从数据库中检索数据但是出现此错误,感谢任何有关如何解决此问题的帮助。 Field.hbm.xml 文件:
使用Finish语句的代码和不使用Finally语句的代码之间有什么不同?。这对于没有Finish语句的代码来说,它们看起来是一样的。有什么不同吗,比如表现还是什么?。这是我从那个网站得到的流程图。在
在 Redshift 上输入以下查询时,我收到“错误:带有 ORDER BY 子句的聚合窗口函数需要框架子句”消息。请帮助 - 我正在尝试查看成员从第一天到今天的成长情况。谢谢。 select dat
我正在为此编写一个查询: select * from players where player_name like '%K% and player_rank 1; 现在,函数 check_if_p
我有 3 个 SQL 查询: 从 user_id =4 的用户中选择 student_id;//返回 35 select * from student where student_id in (35)
我有这样一个 xml: nota1 nota2 nota3 nota4 nota1
我一直试图找出错误,我正在做一种编程语言并有下一个代码,使用 ragg,我有一个语法对象(resto ...),它有一个括号作为数据,我转换这个语法对象到一个数据: (let ([i (synt
我正在尝试在 MS SQL Server 上连接 2 个或更多表。所有表都有确定事件记录的 IsActive 字段。 (IsActive = 1 表示事件记录,IsActive = 0 表示非事件记录
有人可以指导我修复此查询中的错误吗: var objApps = from item in xDoc.Descendants("VHost")
我在 MySQL 中遇到错误:错误代码:1054。“on 子句”中的未知列“s.Product_id” 出现在: SELECT c.customer_ID, p.Product_id, p.Produ
我正在尝试运行一个使用 WHERE 子句从表中选择值的查询,该查询只返回所有条件都有值的行,我是否要返回同样为空的值? Language Table
我是一名优秀的程序员,十分优秀!