我有一个网络应用程序,将文件和注释链接到客户、用户、项目等。最初,我有诸如 customerNote、userNote、projectNote 等表。
设计注意事项:
1:我不想管理 N 个平方表(超过 100 个 customerNote、userNote、projectNote、... customerFile、projectFile...等表)
2:我不想使用动态 SQL(TableName 来自LinkType)
3:我看不到使用链接表的干净方法(没有 100+ N 平方链接表)
现在,我有一个包含 LinkId 和 LinkTypeId 的 Note 表。LinkId当然是client|User|Project|etc表的PK;LinkTypeId 指向链接的类型。
所以这:
SELECT * FROM customerNote WHERE Id = 1210
SELECT * FROM userNote WHERE Id = 3281
现在变成了这样:
SELECT * FROM Note WHERE LinkId = 1210 AND LinkTypeId = 2
(2 是客户)
SELECT * FROM Note WHERE LinkId = 3281 AND LinkTypeId = 3
(3 是用户)
我喜欢这种方法的简单性,并且我已经将它们包装到我到处调用的函数中。
我的问题是:
1:如果没有参照完整性,我会有什么性能或其他问题?
2:这会导致可扩展性问题吗?
3:有没有优雅的解决方案?
这是我的第一篇 SO 帖子,我提前感谢大家的帮助。