Si vous devez utiliser une base de données relationnelle, il existe une solution de contournement (maladroite). Je recommanderais aussi EAV (si vous le pouvez) ou la suggestion de Thilo. Voici la manière relationnelle de le faire.
Soyez prévenu. Voici les limites de cette approche:
- Nous partons du principe d'une limite maximale sur le nombre de colonnes d'un utilisateur peut créer pour chaque type de données.
- Nous aurons des tables rares si de nombreux utilisateurs utilisent seulement quelques-unes des colonnes
- Nous avons besoin de la notion d'un utilisateur qui ajoute du sens à chaque colonne
- Il est une violation flagrante des formes normales
_
create table main_tbl(
numColumn1 number(10),
numColumn2 number(10),
numColumn3 number(10),
numColumn4 number(10),
numColumn5 number(10),
charColumn1 varchar2(100),
charColumn2 varchar2(100),
charColumn3 varchar2(100),
charColumn4 varchar2(100),
charColumn5 varchar2(100),
dateColumn1 date,
dateColumn2 date,
dateColumn3 date,
dateColumn4 date,
dateColumn5 date
)
create table main_tblmeaning(
user_id varchar(25) foreign key references users_tbl (user_id),
numColumn1_name varchar2(50),
numColumn2_name varchar2(50),
numColumn3_name varchar2(50),
numColumn4_name varchar2(50),
numColumn5_name varchar2(50),
numColumn6_name varchar2(50),
charColumn1_name varchar2(50),
charColumn2_name varchar2(50),
charColumn3_name varchar2(50),
charColumn4_name varchar2(50),
charColumn5_name varchar2(50),
dateColumn1_name varchar2(50),
dateColumn2_name varchar2(50),
dateColumn3_name varchar2(50),
dateColumn4_name varchar2(50),
dateColumn5_name varchar2(50)
)
create table users_tbl(
user_id varchar2(25) primary key,
user_name varchar2(50)
)
Chaque fois qu'un utilisateur souhaite une colonne de numéro que vous lui assigner une colonne de numéro gratuit (numColumn1 - 5) dans le main_tbl. Ajoutez une entrée (ligne) dans le main_tbl_meanings qui mapperait la colonne (numcolumn1-5) à un nom lisible par l'utilisateur fourni par l'utilisateur.