Credo che la prima opzione offerta da @ georgeaf99 non funzionerà, perché se si fa così, quindi CompanyCode deve essere univoco nella tabella. Pertanto, ci sarebbe solo un articolo consentito per azienda. Penso che la seconda soluzione sia l'unico vero modo per farlo.
È possibile utilizzare companyCode come il tasto cancelletto, e poi tutti gli altri campi che si combinano per rendere l'oggetto unico (in questo caso InvoiceNumber e LineItemId) devono essere in qualche modo combinati in un unico valore (ad esempio la concatenazione con un delimitatore di campo) , che sarebbe il tuo Range Key. Sfortunatamente è un po 'brutto, ma questa è la natura di un database NoSQL come DynamoDB. Tuttavia, ti consentirà di archiviare correttamente i record con l'unicità corretta. Quando si leggono i record, se non si desidera analizzare nuovamente il campo combinato nelle sue singole parti, sarà necessario aggiungere ulteriori campi separati per InvoiceNumber e LineItemID.
Se non si dispone di un numero elevato di fatture per azienda, è possibile eseguire una query solo con la chiave hash e filtrare sul lato client. Se hai un numero elevato di fatture per azienda e devi poter interrogare solo gli articoli per una singola fattura, creo un indice secondario su CompanyCode e InvoiceNumber.
Come pensate di interrogare questi record? Avrai sempre il Codice azienda + Numero fatture + CodiceItemId per le domande? – James
Sì, quella è una delle query e inoltre ho bisogno di interrogare solo su CompanyCode. – HHH