我正在努力扩展已经投入生产几年的现有项目,我需要扩展一些现有的实体,我们称之为a,b,c,d。
当我现在考虑设计数据库时,所有a,b,c,d都应该有某种继承,但此时不太可能改变模式。
现在所有a,b,c,d都有自己的主键,但它们都必须实现某些界面,如“bookmarkable”,“taggable”,“viewable”等。
继续创建像这样的表是否有意义 a_saved,b_saved,c_saved,d_saved或a_tags,b_tags,c_tags等来建模关系?但是又一次..我将不得不创建相同的代码来处理每个场景,其中唯一的区别是它的表名!
我认为更好的解决方案是创建一个新表 - 让我们称之为“对象”并尝试建模一些继承 - 为每个实体在“对象”表中创建一个条目并将该id存储在它的表中然后创建一个关系表来映射object_tag关系。
这听起来像是可行的解决方案还是可能容易出错,会让我对这个功能感到厌烦吗?
答案 0 :(得分:0)
您的第二个想法的类似解决方案是创建一个表,该表通过组合(实体类型,实体ID)键映射扩展。请参阅此处以获取示例架构和查询:http://sqlfiddle.com/#!9/3c0235/1/0