让我开始的非常基本的问题。假设我有一个按国家/地区划分的销售数据库:
[{:sales/country "CN" :sales/amount 1000 :sales/account "XYZ"} ...]
我还想列出有关每个国家/地区的事实清单,例如:
[{:country/short-name "CN" :country/long-name "China" ...}]
然后进行“列出在中国发生的所有销售(使用长名称)”类型的查询。
那是一个数据库吗?我如何明确有两种不同的模式?我是否先处理第一个模式,然后处理销售数据,然后再处理国家模式和数据?
编辑:抱歉我的问题不清楚。这是现场示例:
(d/transact! conn
[{:country/code "BR" :country/name "Brazil"}
{:country/code "CN" :country/name "China"}])
(d/transact! conn
[{:sales/country "CN" :sales/amount 1000 :sales/account "XYZ"}
{:sales/country "CN" :sales/amount 1000 :sales/account "AAA"}
{:sales/country "BR" :sales/amount 1000 :sales/account "BBB"}}
])
我能够运行查询来加入表并获得我想要的结果。我不明白定义我的模式的最佳实践是什么。它只是其中的一个模式还是两个模式,每个表一个模式。我可以这样做:
(def schema {:country/code {:db/valueType :db.type/string :db/unique :db.unique/identity}
:country/name {:db/valueType :db.type/string}
:sales/account {:db/valueType :db.type/string :db/unique :db.unique/identity}
:sales/country-code {:db/valueType :db.type/string}
:sales/amount {:db/valueType :db.type/integer}
})
有没有更好的方法在模式中定义国家/代码和销售/国家代码是相同的“键”?
谢谢,