我有一个人员表,我希望用户能够与他们创建自定义的多对多信息关系。教育、居住、就业、语言等等。这些可能需要不同数量的列。例如
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,
)
保存单元格信息的表格。
如果任何自定义表格开始与大多数人一起使用并且变得很大,那么我们的想法可能是将其提取到一个单独的硬编码多对多表格中,仅用于该表格。
这是一个愚蠢的想法吗?有一个更好的方法吗?