Si potrebbe semplicemente archiviare il documento stesso nel database e non preoccuparsi di altre tabelle attorno ai tipi ecc. I sistemi di documenti più popolari hanno proprietà e metadati associati ad esso, quindi usalo invece di un sistema predefinito di tabelle.
La tua domanda è abbastanza ampia, ma supponiamo che tutti i documenti siano archiviati nel database come PDF. Anche se non fossero il processo avrebbe funzionato allo stesso modo. Uno potrebbe avere una serie di proprietà / metadati standard per il documento e quindi leggere i dati dal documento stesso (PDF) invece delle tabelle.
Se fosse necessario eseguire una ricerca o una query, estrarre tali informazioni e inserirle in una tabella in modo che si possano scrivere query su di essa sarebbe utile come menzionato da @Bent e altri.
Potresti anche fare un passo avanti e mentre il documento viene caricato nel database il tuo processo esamina i metadati del documento, memorizza parti importanti di quei dati in una tabella per riferimenti futuri e salva il documento e i dati. Non è necessario alcun tipo di tabella di riferimento perché mentre gli utenti caricano i documenti vengono utilizzati i metadati per il documento per classificare e contrassegnare il documento. In questo modo vengono aggiunti automaticamente nuovi tipi senza la necessità di mantenere alcun dato di riferimento.
Quindi, una tabella per contratto. Una tabella per i documenti. Un contratto / documento da molti a molti se i documenti possono essere condivisi tra i contratti. se non solo vai con l'FK come menzionato da @Bent.
La tabella dei documenti potrebbe avere anche le proprietà importanti o potrebbero essere separate in tabelle di riferimento separate.