Database design 带有社交网络设计的评论系统
您好,我正在制作一个简单的网站与评论系统。用户可以使用社交网络ID(FB、Twitter等)登录或注册网站并发表评论(有些用户不愿意为此使用他们的FB帐户)。我有两个可用的表(一个用于HybridAuth,另一个用于本地用户表)。现在我的问题是,我如何设计表格和整个系统,使其以这种方式运行?基本上,我的问题可以分解如下:Comments表需要注释者的ID(FK来自这两个表中的任何一个,但不能同时来自这两个) 那么,常用的方法是什么(因为许多网站都使用disqs、FB、twitter等)Database design 带有社交网络设计的评论系统,database-design,yii,hybridauth,Database Design,Yii,Hybridauth,您好,我正在制作一个简单的网站与评论系统。用户可以使用社交网络ID(FB、Twitter等)登录或注册网站并发表评论(有些用户不愿意为此使用他们的FB帐户)。我有两个可用的表(一个用于HybridAuth,另一个用于本地用户表)。现在我的问题是,我如何设计表格和整个系统,使其以这种方式运行?基本上,我的问题可以分解如下:Comments表需要注释者的ID(FK来自这两个表中的任何一个,但不能同时来自这两个) 那么,常用的方法是什么(因为许多网站都使用disqs、FB、twitter等) 如果在S
如果在SO或其他地方有任何链接,我将很高兴被指向。有两种方法: #1独家FKs 如前所述,将FK和CHECK约束置于它们之上,以确保其中一个为NULL 请注意,某些DBMS(最著名的是MySQL)不强制执行检查约束,在这种情况下,您需要从触发器或客户端代码执行检查约束 #2继承
从一个公共表“继承”这两种用户,然后只引用公共表。下面是如何对“可评论”和“可标记”以及“可喜爱”的内容执行此操作的示例,类似的原则可应用于用户。如何在触发器中执行此操作?在客户端代码中,这是可以做到的,但我发现这会有点昂贵(首先检查是否为Null,然后使用),在等待您的评论时,我会接受答案,因为它为我提供了正确的方向@斯蒂法诺我不确定我是否理解你的问题。您只需创建一个INSERT/UPDATE触发器,显式检查该触发器,并在两个FK都非空时引发异常。具体语法/细节因DBMS而异。我从未在任何DBMS中使用过触发器(从未满足任何需要它们的要求)。我使用MySQL和Yii