如何正确构造具有相似数据的mysql表
我很难想出一个定义订阅系统的好方法。我希望用户能够订阅其他用户、帖子和标签。我最初的想法是创建一个具有以下模式的订阅表如何正确构造具有相似数据的mysql表,mysql,database,database-design,Mysql,Database,Database Design,我很难想出一个定义订阅系统的好方法。我希望用户能够订阅其他用户、帖子和标签。我最初的想法是创建一个具有以下模式的订阅表 id int NOT NULL AUTO_INCREMENT user_id int NOT NULL subscription_id int NOT NULL subscription_type int NOT NULL subscribe_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP unsubscribe_date t
id int NOT NULL AUTO_INCREMENT
user_id int NOT NULL
subscription_id int NOT NULL
subscription_type int NOT NULL
subscribe_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
unsubscribe_date timestamp NULL DEFAULT NULL
notification_frequency int NOT NULL DEFAULT 1440 //number of minutes in day
对于用户
,订阅类型为0
;对于帖子
和2
标签,订阅类型为1
,订阅id
是该元素行的id,有时是用户id,有时是帖子id,有时是标签id
必须有更好的方法,而我能想到的其他方法似乎更糟。就像制作多个订阅表一样,每个订阅类型一个。或者在我的系统中的所有用户/帖子/标签上实现uuid
字段
必须有一种方法可以指示存在多个订阅类型,而不需要为每种订阅类型使用带有任意整数值的额外列。否
- 3张桌子,或
- 3
在联合中选择
,包括或不包括UUID,或
- 3个
CASE
元素,每个元素都有一个子查询
而且
- 冗长、混乱的SQL,或
- 冗长、混乱的应用程序代码,或
- 每种都有一些