Un modello comune nella progettazione del database consiste nell'appendere le colonne dinamiche a una tabella con un design come questo:
create table MasterTable
(
Id int not null primary key
, Name nvarchar(64) not null unique
, SomeColumn2 int not null
)
create table MasterTableAdditionalColumn
(
Id int not null primary key
, ColumnName nvarchar(64) not null unique
)
create table MasterTableAdditionalColumnData
(
Id int not null primary key
, MasterTableId int not null foreign key references MasterTable(Id)
, MasterTableAdditionalColumnId int not null foreign key references MasterTableAdditionalColumn(Id)
, Value nvarchar(1024) not null
)
create unique index UK_MasterTableAdditionalColumnData_Key
on MasterTableAdditionalColumnData
(
MasterTableId
, MasterTableAdditionalColumnId
)
vale a dire. Un design in cui possiamo effettivamente aggiungere una nuova colonna nvarchar(1024)
al nostro MasterTable
in qualsiasi momento creando una nuova voce in MasterTableAdditionalColumn
per il nome della colonna; e può popolare questi valori di colonne creando voci in MasterTableAdditionalColumnData
con l'id della colonna appropriata ( MasterTableAdditionalColumnId
) e l'ID del record master correlato ( MasterTableId
).
Esiste un nome per questo motivo / tipo di tabella? Ho sempre usato nomi come dynamic columns
o extension table
, ma non ho avuto fortuna nel trovare quei termini o qualcosa di ufficiale su Google.
Aggiornamento
Un esempio di ciò a cui mi riferisco può essere visto qui: link
vale a dire. colonne Surname
e JobTitle
nel set di risultati ottengono i loro valori da un elenco di coppie nome-valore per ogni MasterTable
record; vale a dire dalla tabella MasterTableAdditionalColumnData
.
Mi chiedo quale sia il termine per una tabella come MasterTableAdditionalColumnData
; oppure questo approccio alla progettazione del modello di dati per consentire la definizione delle colonne in fase di esecuzione è