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 è