2012-08-22 55 views
1

只是一个简单的问题。我正在尝试创建一个简单的朋友数据库测试应用程序来学习Visual Studio 2010实体框架和MySQL。事情是,我不知道这是否正确。实体框架和朋友数据库的问题

这里是我目前的模型的图像:

的事情是,为什么有两个朋友的导航属性和两个帐户导航属性。我会想,也许这位朋友实体是唯一一个拥有两个帐户导航属性的人,以便我可以访问这两个朋友的帐户。

这里是我的表布局:

  • 帐户:
    1. idaccounts - 主键,非空
    2. 尼克 - 该用户的昵称
  • 好友:
    1. idfriends - 主键,不是空
    2. friend_one - 第一个帐户数
    3. friend_two - 第二个朋友数
    4. 状态 - 包括友谊(1的状态。待定,2。接受,拒绝3)

另外,我创建的朋友表内的两个外键账目表。一个名为friend_one,它使用friend表中的friend_one列来引用帐号表。另一个名为friend_two,它使用friend_two列来引用帐户表。

这是做这件事的正常方法,还是有更好更健全的方法?

回答

-1

答案是..它取决于。通常情况下,您不会在一张表中重复字段(即FriendOne,FriendTwo等)。因为,让我们说你是一个友善的人(Wiggels先生听起来像一个友善的名字),你有两个以上的朋友。那又怎么样?

以下是我该怎么做。 AccountFriendAccount是数据库中相同帐户表的别名。

normalize account/friend schema

但是,如果你的情况你确保你将只最多有两个朋友,这将在技术上工作。但是,再次,可能是糟糕的设计,因为它的规模不大。

+0

开始是肯定的,这看起来很不错,但就是3页不同的表刚刚举行帐户,朋友和朋友帐户?不能将朋友指向账户的表格,从而避免必须创建额外的表格并插入更多的行 –

+0

不,只有两个物理表格#Account#和#Friend#。 #FriendAccount#是帐户的别名。您拥有的是账户之间的多对多关系。现在我想到了,对于映射表,#FriendMapper#可能不会比#Friend#更令人困惑。 –

+0

哦,是的,我明白了,现在它更有意义。感谢名单! –

0

我认为这很正常。如果某个帐户有多个朋友,则只需向朋友表中添加一行即可。

Hovewer,我强烈recommnd您阅读一些有关数据库规范化,如果你还没有:)也许从wikipedia

+0

是的,我明白,但我试图将Friends表中的两列链接到Accounts表中,以使关系清晰,并避免重复,我只是认为有bot的1 .. *关系并且数据模型中的两个导航属性会导致问题 –

+0

为什么您认为两个导航属性可能存在任何问题?我不认为这会成为一个问题:) –