個人テーブルがあり、ユーザーがカスタムの多対多の情報関係を作成できるようにしたいと考えています。教育、住居、雇用、言語など。これらには、異なる数の列が必要になる場合があります。例えば
Person_languages(person_fk,language_fk)
Person_Educations(person,institution,degree,field,start,end)
このようなことを考えました。(正しくない sql)
create Tables(
table_id PRIMARY_KEY,
table_name_fk FOREIGN_KEY(Table_name),
person_fk FOREIGN_KEY(Person),
table_description TEXT
)
すべてのカスタム テーブル名と説明を保持するテーブル
create Table_columns(
column_id PRIMARY_KEY,
table_fk FOREIGN_KEY(Tables),
column_name_fk FOREIGN_KEY(Columns),
rank_column INT,
)
各カスタム テーブルの列とそれらが表示される順序を保持するテーブル。
create Table_rows(
row_id PRIMARY_KEY,
table_fk FOREIGN_KEY(Tables),
row_nr INT,
)
各カスタム テーブルの行を保持するテーブル。
create Table_cells(
cell_id PRIMARY_KEY,
table_fk FOREIGN_KEY(Tables),
row_fk FOREIGN_KEY(Table_rows),
column_fk FOREIGN_KEY(Table_columns),
cell_content_type_fk FOREIGN_KEY(Content_types),
cell_object_id INT,
)
セル情報を保持するテーブル。
カスタムテーブルがほとんどの人に使用され始めて大きくなった場合、そのテーブル専用の別のハードコードされた多対多テーブルに抽出することが考えられました.
これはばかげた考えですか?これを行うより良い方法はありますか?