所以我有一个带有复合键的表,基本上是'userID' - 'data'必须是唯一的(参见我的其他问题SQL表 - 半唯一行?)
但是,我想知道是否有可能使这只在userID不为零时生效?我的意思是'userID' - 'data'对于非零userID必须是唯一的?
还是我在错误的树上吠叫?
由于
马拉
我确信我不是第一个在表中具有复合唯一键并且想要验证它们的人.我不想发明自行车所以我先问这里.我有几个表'id'列作为主键,另外两列作为唯一复合键.最好有一个验证规则来检查提交的条目是否唯一,如果不是则显示验证错误.在Cakephp中,它可以通过自定义验证规则来完成.我很确定有人已经创建了这样的方法.
理想情况下,它将是app_model.php中可以由不同模型使用的方法.
我要为Cassandra测试不同的数据模型.我正在考虑使用key1:key2为行键创建的复合键.例如,在Cassandra上使用此配置,我可以查询所有行具有特定的key1值和任何key2值但是否则不可能(获取具有特定key2的值和任何key1的所有行).这样对吗?
提前致谢
切萨雷
我需要确保所有节点中多个属性值的组合是唯一的.如何在Neo4J中做到这一点.
从http://docs.neo4j.org/chunked/milestone/transactions-unique-nodes.html上提供的Neo4J文档中,可以确保一个属性的唯一性.但是2个或更多的组合怎么样?
我在我的模型中使用复合键并根据我的复合键生成ID:
app.Assignment = Backbone.Model.extend({
idAttribute : [ 'personId', 'jobId' ],
parse : function(resp) {
resp.id = resp.personId + "_" + resp.jobId;
return resp;
}
});
Run Code Online (Sandbox Code Playgroud)
但是Backbone仍然认为Assignment的所有实例都是新的,尽管我在从API中获取它时在parse方法中设置了id.因此,Backbone没有DELETE,并且在更新时执行POST而不是PUT.我该如何解决这个问题或者"正确的方法"呢?
更新:
看起来像用this.id替换resp.id解决了这个问题.
我想通过CQL3中除Row Key之外的复合键来查询数据过滤.这些是我的疑问:
CREATE TABLE grades (id int,
date timestamp,
subject text,
status text,
PRIMARY KEY (id, subject, status, date)
);
Run Code Online (Sandbox Code Playgroud)
当我尝试访问数据时
SELECT * FROM grades where id = 1098; //works fine
SELECT * FROM grades where subject = 'English' ALLOW FILTERING; //works fine
SELECT * FROM grades where status = 'Active' ALLOW FILTERING; //gives an error
Run Code Online (Sandbox Code Playgroud)
错误请求:PRIMARY KEY部分状态不受限制(前一部分主题不受限制或非EQ关系)
只是为了试验,我把关键字保持为"我的主要行密钥".我总是只能使用主行键或第二个键进行查询,考虑到上面的例子,如果我在主键列表中交换主题和状态,我可以查询状态,但如果我尝试通过,我会得到类似的错误主题或时间.
难道我做错了什么?我可以不使用CQL3中的任何其他复合键查询数据吗?我正在使用Cassandra 1.2.6和CQL3.
我可以通过选择两列(OrderId,CompanyId)并右键单击并设置为主键,在sql server management studio 2012中成功创建复合主键.但我不知道如何使用sql server management studio 2012在其他表中的两列(OrderId,CompanyId)上创建外键.
我想要了解Cassandra的复合色谱柱存储引擎.不幸的是,到目前为止我读过的文档包含错误,让我有点空白.
首先,术语.
复合列通过使用复合主键包含完全非规范化的宽行.
这似乎具有误导性,因为AFAIK复合列可以用于复合键,也可以简单地用作除键之外的复合列.
1:如何实现复合键和列名?我能找到的每个CQL示例只显示复合键作为列,而不是普通复合列.
假设我们将列'a','b','c','d'作为主要复合键+列'e','f'.我知道'a'将是行和分区键.
我们假设以下数据:
a b c d e f
1a 1b 1c 1d e1 f1
1a 1b 1c 2d e1 f2
1a 1b 1c 2d e2 f3
2a 2b 2c 2d e2 f4
Run Code Online (Sandbox Code Playgroud)
2:这是如何存放在引擎盖下的?我想这里真正的问题是'b','c','d'如何映射出来,因为列根据定义不是分层的.
3:我读过的文档说不再使用紧凑型存储.但是如果不需要添加非主键列呢...那么不使用它的原因是什么?
我需要根据两个键(comp和part)进行映射.
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.comp)
</td>
<td>
@Html.DisplayFor(modelItem => item.part)
</td>
...........................
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.comp }) |
@Html.ActionLink("Details", "Details", new { id = item.comp }) |
@Html.ActionLink("Delete", "Delete", new { id = item.comp })
</td>
</tr>
}
Run Code Online (Sandbox Code Playgroud)
如何在Index页面和控制器中使用复合键.
public ActionResult Edit(int? id)
{
DataView record = db.RecordDataView.Find(id);
if (record == null)
{
return HttpNotFound();
}
return View(record);
}
Run Code Online (Sandbox Code Playgroud)
如果有人有想法请回复.
我正在使用 JPA 为具有复合键的数据库定义数据模型。我无法更改数据库。
我有一个Car带有复合键(carType 和 carId)的实体。第二个(可选)PorscheInfo实体包含保时捷汽车的附加信息。不幸的是,相应的“porsche_info”表不包含包含 carType 信息的列,因为其条目专门引用CarType = 'Porsche'。
此操作的 SQL 很简单:
SELECT *
FROM cars
LEFT JOIN porsche_info
ON cars.CarId = porsche_info.CarId
AND cars.CarType = 'Porsche'
Run Code Online (Sandbox Code Playgroud)
如何将其转换为正确的 JPA 设置?
到目前为止,我有以下实体类:
@Embeddable
public class CarKey {
private String carType;
private String carId;
}
@Entity(name = "cars")
public class Car {
@EmbeddedId
private CarKey key;
// car information
@OneToOne
@JoinColumn(name = "CarId", referencedColumnName = "CarId")
private PorscheInfo porscheInfo;
// or
@OneToMany
@JoinColumn(name = "CarId", …Run Code Online (Sandbox Code Playgroud) composite-key ×10
cassandra ×3
sql ×2
backbone.js ×1
cakephp ×1
conditional ×1
cql3 ×1
hibernate ×1
indexing ×1
jpa ×1
model ×1
mysql ×1
neo4j ×1
one-to-many ×1
one-to-one ×1
storage ×1
validation ×1