假设此模型和键值存储支持获取整个对象而不仅仅是标量类型:
class Country
{
public string Name { get; set; }
}
class Company
{
public string Key { get; set; }
public string Name { get; set; }
public Country Country { get; set; }
}
var bmw = new Company
{
Key = "bmw",
Name = "Bayerische Motoren Werke",
Country = new Country { Name = "Germany" }
};
var vw = new Company
{
Key = "vw",
Name = "Volkswagen",
Country = new Country { Name = "Germany" }
};
myStore.Put(bmw.Key, bmw);
myStore.Put(vw.Key, vw);
问题:
答案 0 :(得分:0)
考虑下面的键/值对示例 - 使用不数字标识符,但是有意义的,标准体分配的主键:
Country.de.Name=Germany
Company.1.Name=BMW
Company.1.Country=de
Company.2.Name=VW
Company.2.Country=de
这有意义地按照尊重国家标准化:架构设计使得国家/地区名称只存储一次,只能存储一次(防止任何可能存在冲突的数据)。
"完整性检查"和"外键"与规范化无关的概念;那么说,我会注意到一些元组存储(其中键/值存储实际上是一个简并子集)确实支持约束执行;例如,在Datomic中,这是通过交易功能实现的。
同样,Redis可以在服务器端运行任意Lua代码,这是应用程序可用于约束实施的功能。 简而言之:可以对键/值存储中的内容进行有意义的规范化。