[英]MySQL Database Design with tags across multiple tables
我正在使用一些应该使用相同用户表的Web应用程序。 不同的应用程序都需要不同的表设计,因此我为每个应用程序创建了一个表,其中UserID是引用用户表的外键。
现在,我想向所有应用添加标签。 标签应位于每个应用程序的一个表中,以便轻松查询一个用户的所有标签(出于搜索目的,无论应用程序是什么,搜索都应能够找到使用该标签标记的所有内容)。 就我个人而言,我不认为将它们拆分为多个表是一个好主意,但我并不是将其拆分为数据库设计,所以我可能是错的。 我目前的尝试看起来像这样:
[标签]
EntryID | UserID | Tag
事实是,使用此解决方案,EntryID在所有应用程序表中都必须唯一。 对于notes应用程序,我需要这样的东西:
[笔记]
EntryID | UserID | title | content | etc.
对于我的日历,我有下表:
[日历]
EntryID | UserID | name | start | end | etc.
现在,我不知道如何管理这些EntryID。 我应该这样创建另一个表吗
[条目]
EntryID | UserID | type
类型是“ note”或“ calendar”,而EntryID是主键? 并且类型应该是整数还是字符串,还是可以引用类型列中的另一个表? 然后我应该将应用程序表中的EntryID变成引用表项表的外键吗?
我将userID放在每个表中,因为我认为这将加快查询速度,例如,当我需要一个用户在所有应用程序中设置的每个标签时。 我知道规范化通常禁止这样做,但是我再次认为,这将大大提高查询速度并减少MySQL服务器和后端的负载。
感谢您为构建此结构提供的所有技巧,并在此先感谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.