1

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

这是我当前模型的图像:

问题是,为什么有两个朋友的导航属性和两个帐户导航属性。我原以为朋友实体可能是唯一具有两个帐户导航属性的实体,以便我可以访问这两个朋友的帐户。

这是我的表格布局:

  • 帐户:
    1. idaccounts - 主键,不为空
    2. nick - 用户昵称
  • 朋友们:
    1. idfriends - 主键,不为空
    2. friend_one - 第一个帐号
    3. friend_two - 第二个朋友号码
    4. status - 包含友谊的状态(1. Pending,2. Accepted,3. Rejected)

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

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

4

2 回答 2

0

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

但是,我强烈建议您阅读有关数据库规范化的内容,如果您还没有:) 也许从维基百科开始

于 2012-08-23T02:21:14.867 回答
-1

答案是..这取决于。通常,您不会在一个表中重复字段(即 FriendOne、FriendTwo 等)。因为,假设您是一个友好的人(Wiggels 先生听起来像一个友好的名字)并且您有超过 2 个朋友。然后呢?

下面是我将如何做到的。 Account并且FriendAccount是数据库中同一个 Account 表的别名。

规范化帐户/朋友模式

但是,如果在你的情况下你确定你最多只有两个朋友,那么这在技术上是可行的。但同样,可能是糟糕的设计,因为它没有按比例磨损。

于 2012-08-23T02:12:40.227 回答