我正在使用通过 Sql Server 2008 创建的数据库创建一个 asp.net 网站(通过 Expression Web 4 和 Visual Web Developer 2010 Express)。但是,我对提供给网站的数据库架构感到困惑。
正在创建的网站是为了允许创建法律案件,记录案件的类型,然后记录律师和/或辩护人和/或支持人员处理案件。
因此,名为“Kramer v Kramer”的案件将是一个离婚案件,由 2 名律师、1 名律师和 4 名支持人员共同处理此案。然而,另一个案件“人民诉拉里弗林特”可能是一个有 4 名律师、没有律师和 10 名支持人员的起诉案件。
到目前为止,我所做的是我有一个名为“案例表”的表,其中包含以下列:
Case_ID(这是表的主键);Case_Type_ID;律师_ID;Advocate_ID 和 Support_Staff_ID。案例表中的最后 4 列是外键。
Case_Type表只有两列:“Case_Type_ID”(PK)和“Area_of_law”。Case_Type_ID 只是数字 (001,002...),“Area_of_law”是 char(30)(例如诉讼、离婚、财产、刑事)。到现在为止还挺好。
问题是(这适用于倡导者和支持人员),如果我创建律师表以仅包含三列:
Columns = Lawyer_ID(作为主键)| 名字 | 姓
记录 1 = 001 | 汤姆 | 汉克斯
记录 2 = 002 | 汤姆 | 巡航
记录 3 = 003 | 丹尼尔 | 克雷格
记录 4 = 004 | 妮可 | 基德曼
然后我如何为案件分配多名律师?
在Case Table中,为了符合规范化规则,大概我需要如上所述向Case Table添加列,以便记录 Lawyer_ID_1 (FK)| Lawyer_ID_2 (FK)| Lawyer_ID_3 (FK) | Lawyer_ID_4 (FK)。
所以它可能是 004 | 002 | 空 | Null 显示妮可基德曼和汤姆克鲁斯正在处理此案。如果我只有一个 Lawyer_ID 列,为了显示 Nicole Kidman 和 Tom Cruise 正在处理此案,它必须是“004,002”,这是我在这个网站上读到的一个很大的禁忌。
通过将所有律师记录在一个单独的表中,我可以在visual web developer 2010 express 中创建一个数据绑定复选框列表(绑定到律师表),因为它使用律师姓名填充列表。所以我对这种方法很满意。
但是,如果在Lawyer Table中有 50 位律师,我需要在Case Table中分配 50 列仅分配给律师(如果一个案例最终有 50 位律师在处理它)。这种方法是有问题的,因为如果律师被删除或添加,因为律师列的数量受到影响,案例表可能会出现偏差。显然这是一个不好的方法,所以有人可以帮忙吗?
是否有一种数据库模式允许一个“案例”记录与多个“律师”记录相关,而不需要很多列?(希望该模式也可以应用于Support Staff Table和Advocate Table)。
您的帮助将不胜感激。我是 web 开发和 sql 数据库工作的新手,我试图查找解决方案,但我可能不知道我的问题的关键字。