SQL数据库模型

时间:2012-06-20 10:11:50

标签: c# sql database linq database-design

我正在努力研究如何为我正在构建的数据库绘制模型。一旦我正确地建模了数据库,我将在C#中使用SQL2LINQ。

我正在研究的第一部分是为分发列表设计SQL表。

这些DL似乎非常复杂,因为以下规则适用:

  1. 有三种不同类型的DL(用于特定事件)。
  2. 每种类型的DL都包含多个DL(可以超过10个)。
  3. 一个人可以使用所有三种不同类型的DL。
  4. 一个人可以在同一类型的多个DL中。
  5. 对于此人,我将持有以下信息:

    1. 用名字
    2. 联系电话
    3. 电子邮件地址
    4. 我不喜欢的是复制信息的想法,多次在数据库中拥有相同的人;看起来不太干净。

      任何帮助都会非常感激,我无法完全理解这一点。

2 个答案:

答案 0 :(得分:1)

您需要了解外键和父/子关系。

我不确定我是否会像你描述的那样完全设计它。您可以为每个分发列表创建一个单独的表,或者您可以使用一个列来表示它所属的事件类型。

我不明白为什么分发列表需要递归,但您可以与自己建立外键关系。查询将更难以这种方式编写,但可以由具有足够技能的人员完成。 Google用于“递归SQL”。

在它们之间有一个PERSON表,一个DISTRIBUTION_LIST表和一个JOIN表。听起来PERSON和DISTRIBUTION_LIST之间存在很多关系。

答案 1 :(得分:1)

听起来好像你只想要人和分发列表之间的多对多关系,你可以使用联结表进行建模:

<强>人

  • 编号
  • 用名字

<强> DistributionListEntries

  • 编号
  • DistributionListId
  • PERSONID

<强> DistributionList

  • 编号
  • 类型

您可以将Type直接存储在通讯组列表中,也可以将其作为DistributionListTypes表的外键,并提供有关通讯组列表类型的其他信息。