实体框架和朋友数据库的问题

时间:2012-08-22 19:50:47

标签: c# mysql database entity-framework

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

这是我当前模特的图片:

问题是,为什么有两个朋友的导航属性和两个帐户导航属性。我原以为可能朋友实体是唯一一个拥有两个帐户导航属性的实体,这样我就可以联系到这两个朋友的帐户。

这是我的表格布局:

  • 帐户:
    1. idaccounts - 主键,非空
    2. nick - 用户昵称
  • 朋友:
    1. idfriends - 主键,非空
    2. friend_one - 第一个帐号
    3. friend_two - 第二个朋友号码
    4. status - 包含友谊的状态(1.待定,2。接受,3。拒绝)

另外,我在friends表中创建了两个外键到accounts表。一个名为friend_one,它使用friend表中的friend_one列来引用accounts表。另一个名为friend_two,它使用friend_two列来引用accounts表。

这是正常的做法吗,还是有更好更理智的方式?

2 个答案:

答案 0 :(得分:0)

我认为这很正常。如果某个帐户有多个朋友,您只需在朋友表格中再添加一行。

Hovewer,我强烈建议您阅读有关数据库规范化的内容,如果您还没有:)可能从wikipedia开始

答案 1 :(得分:-1)

答案是......这取决于。通常,您不会在一个表中重复字段(即FriendOne,FriendTwo等)。因为,让我们说一个友好的人(Wiggels先生听起来像一个友好的名字),你有超过2个朋友。那又怎样?

以下是我的表现方式。 AccountFriendAccount是数据库中同一Account表的别名。

normalize account / friend schema

但是,如果你的情况是肯定,你最多只能有两个朋友,这在技术上是有效的。但同样,可能是糟糕的设计,因为它没有规模。