Datomic/datascript เชิดแพลตตินั่มทั้งหมดไปใช่-เรามีหลาย schemas

0

คำถาม

มากพื้นฐานถามคำถามเพื่อให้ฉันเริ่มกันเลย คิดว่าฉันมีฐานข้อมูลของฝ่ายขายโดยประเทศ:

[{:sales/country "CN" :sales/amount 1000 :sales/account "XYZ"} ...]

ฉันอยากจะยังมีรายชื่อของข้อเท็จจริงเรื่องแต่ละประเทศบางอย่างเหมือน:

[{:country/short-name "CN" :country/long-name "China" ...}]

แล้วทำค้นข้อมูลของประเภท"แสดงรายการของฝ่ายขายนั่นเกิดขึ้นในประเทศจีน(โดยใช้นามชื่อ".

นั่นคือหนึ่งฐานข้อมูลหรือเปล่า ฉันจะทำให้มันชัดเจนมันมีสองคนหารค่า schemas? ฉัน transact นคนแรกชุดรูปแบบแล้วก็ขายข้อมูลและหลังประเทศชุดรูปแบบและข้อมูลนั้นเหรอ?

แก้ไข:ขอโทษนะคำถามของผมไม่ชัดเจน นี่คือมีชีวิตอยู่ตัวอย่าง:

(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}

             })

และมันมีวิธีที่ดีกว่าเพื่อกำหนดอยู่ในรูปแบบชุดสีที่ประเทศ/รหัสและขาย/ประเทศ-รหัสคือคนๆเดียวกันกับ"กุญแจ"?

ขอบคุณ

clojure datascript datomic
2021-11-23 08:22:51
1

คำตอบที่ดีที่สุด

1

คุณสามารถมีเพีย 1 ชุดรูปแบบ,แต่นั่นน่าจะพอแล้วล่ะ ใช้ห้วงชื่อในคำค้นเพื่อแยกความแตกต่างระหว่างต่างไป"โดเมน"(:country/* สำหรับข้อมูลเรื่องประเทศ :sales/* สำหรับข้อมูลเรื่องการขาย).

Datomic เป็นมากกของคอลัมน์ร้านดังนั้นมีรายการได้มีแอททริบิวต์และคุณสามารถผสมแตกต่าง"ตารางข้อมูลเรียบร้อยแล้ว"บนนัดเดียวแอททริบิวต์(ฉันไม่ติเรื่องนั้นแต่มันเป็นไปได้).

ของใช้ของ :country/code คือสิ่งที่ Datomic เรียก"ผู้ extrenal ชื่อ". นี่มันยังดีองซ้อมกันถึงแม้ไม่มีทางที่จะระบุมัน :sales/country คือการอ้างอิงไป :country/code.

สิ่งที่ผมแนะนำให้คุณทำแทนให้ :sales/country เป็น Datomic อ้างอิง:

:sales/country-code {:db/valueType :db.type/ref}

และจากนั้นเชื่อมโยงไปยังมันในการต่อรองโดยใช้ค้นหา ref:

@(d/transact! conn [{:sales/country [:country/code "CN"] :sales/amount 1000 :sales/account "XYZ"})

นี่จะทำให้มั่นใจว่าประเทศนี้หัสอยู่ระหว่างการต่อรองเวลา คุณจะยังได้ผลประโยชน์เหมือนเรื่องง่ายกำลังรับประเทศข้อมูลจากการขายใช้ entities/งแรงดึงดูด

2021-11-25 10:42:13

ขอบคุณ,นี่คือคำอธิบายฉันกำลังมองหา! และขอบคุณ@นิกิ Tonsky สำหรับคดีผมต้องกา Clojure ชุมชน
alex314159

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................