我有一张表Table1
,其中包含以下列
1. Id
2. Name
3. TransportModeId
4. ParkingId
5. ActivityId
列3,4,5是外键,所有三个都是简单的列表,其中包含以下列
1. Id
2. Item
为简单起见,我已经显示了3个表,否则我的实际模式包含近25个List表。
最佳实践应该是什么
选项1。 保持所有列表分开,这将创建25个表,但另一方面,我将有一个干净的模块化架构
选项2。
创建一个具有自联接的表,并添加该表中的所有项,其中ParentId
null将表示表的名称,并且如上所述,它可以在其他表中具有多个引用,并且必须保留在某种通用模块
感谢
答案 0 :(得分:1)
选项1是在设计一个不应被最终用户/实现者配置的系统时正常完成的方式。它有几个重要的优点,其中两个:
当您需要为任何枚举添加额外属性时(例如停车位置到停车位),这很简单,不会产生额外的问题。
使用关系数据库引擎的原始算法来链接记录,对速度进行了优化。
关于选项2: 它叫做Generalization。您可以使用具有相似属性(方法)的更多类型,并创建具有适合不同目的的结构的类/表。
自我引用,正如您所说,对于选项2不是一个好主意,而是引用包含类型名称的另一个EnumerationType
表,如Parking
,Activity
等。带id。
如果您需要让最终用户在您的应用中自行配置属性,则可以使用此方法。但是当你发现不同的枚举表需要有不同的结构时,它可能会导致你的问题。