我正在考虑一种数据库设计,它将有两个表成员和组。每个成员将至少属于一个组 - 但成员可能有多个组。反映这一点的最佳方法是为组成员创建一个 id 数组并将其作为外键存储在成员的记录中吗?
问问题
93 次
2 回答
4
N:M 关系通常被建模为数据库中的一个额外表。因此,您将拥有一个Member
-table、一个Group
-table 和一个MemberInGroup
-table,您将在其中存储两个主键。
像这样:
+----+----------------+ +----+---------------+ +-----+----+----+
|m_id|member | |g_id|group | |mg_id|m_id|g_id|
+----+----------------+ +----+---------------+ +-----+----+----+
|1 |tom | |1 |groupA | |1 |1 |1 |
|2 |tim | |2 |groupB | |2 |1 |2 |
|3 |michael | +----+---------------+ |3 |2 |1 |
+----+----------------+ +-----+----+----+
您的想法 - 在您的 -table 中存储多值属性Member
与第一个范式(http://en.wikipedia.org/wiki/Database_normalization#Normal_forms)冲突,后者指出每个属性必须是单个值。
于 2012-07-03T16:05:10.523 回答