Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 我应该为两个相似的对象制作两个单独的表吗_Database_Database Design - Fatal编程技术网

Database 我应该为两个相似的对象制作两个单独的表吗

Database 我应该为两个相似的对象制作两个单独的表吗,database,database-design,Database,Database Design,我想在我的应用程序中存储“Tweets”和“Facebook状态”,作为“状态集合”的一部分,这样每个状态集合都会有一堆Tweets或一堆Facebook状态。对于Facebook,我只对文本感兴趣,所以现在不存储视频/照片 我想知道DB设计的最佳实践。是否最好有一个表(将状态的最大值设置为420,以包括Facebook和Twitter的限制)带有“Type”列,用于确定状态,还是最好有两个单独的表?为什么呢?我会将消息放在一个表中,然后用另一个表定义类型: SocialMediaMessage

我想在我的应用程序中存储“Tweets”和“Facebook状态”,作为“状态集合”的一部分,这样每个状态集合都会有一堆Tweets或一堆Facebook状态。对于Facebook,我只对文本感兴趣,所以现在不存储视频/照片


我想知道DB设计的最佳实践。是否最好有一个表(将状态的最大值设置为420,以包括Facebook和Twitter的限制)带有“Type”列,用于确定状态,还是最好有两个单独的表?为什么呢?

我会将消息放在一个表中,然后用另一个表定义类型:

SocialMediaMessage
------------------
id
SocialMediaTypeId
Message

SocialMediaType
---------------
Id
Name

它们看起来很相似,没有必要把它们分开。如果你想在这两个社交网站上进行查询,它也会让你的生活变得更轻松。

它可能更容易在表上使用,并使用type来识别它们。当您有多个表时,只需要一个查询/存储过程来访问数据,而不是每种类型一个查询

严格来说,tweet与FB更新不是一回事。您可能暂时忽略了非文本,但稍后可能会改变主意,并被一个不起作用的模型卡住。作为一般规则,对象不应被视为可互换的,除非它们确实是可互换的。如果它们仅仅是相似的,您应该使用两个单独的表,或者根据需要使用其他列


综上所述,如果它真的只是文本,你可能只需要一张桌子就可以了。但这是一个意见问题,你可能会得到很多答案。

你的观点很有道理。我想说的唯一一件事是,您可能应该根据您的业务对象是什么而不是现实世界中的对象是什么来设计DB。我猜这要归结到他是否关心社交媒体消息、推特和FB帖子……是的,这是有道理的。需求在未来通常会发生变化,我们可能需要未来每种类型的额外信息。