50多不同的类别,分享50%的属性。 如何创建所有这些表格有效地在sql数据库? [关闭]

0

的问题

在大型系统,在分析该数据库,约有50个不同的类别中的要求,其中应表示为表。

每个类别中有许多属性--列,所有这些类别具有相同的50%列。 例如,每一类别有(身份证、姓名、日期、状态下,管理部),所有类别具有这些属性,但是每一类别都有自己的属性而彼此不同,他们都是大约3-5属性。

现在,如何代表他们在物理数据库作为表? 一个表,或表对于每一个类别,那么冗余?

sql sql-server
2021-11-24 02:49:24
2

最好的答案

3

取决于什么你都在试图实现。

如果你的主要问题是磁盘空间,我会建议考虑 稀疏列列设置 作为一种选择,如果必要的。 在这种情况下,你可以把所有这些实体合并为一个单独的物理表,与强制性属性是正常的列和特定的属性被宣布为稀疏。

如果你想一个标准化模式,将消除大多数数据中的异常情况,一个典型的解决方案是一个 超类型-亚型 的层次结构。 主要表商店的唯一属性,都是强制性的所有实体,以及儿童表只包含主要表标识符和属性的特定这个特别的类别。 所有儿童表参考的"超类型"表通过外键。

有时,根据主题领域,一个更复杂的模型,与其他"筑巢"的水平可能被采用。 你可以认为这一类继承的层次结构的比喻是非常的接近,实际上.

当然,两者(和其他)方法有其长处和弱点,因此可能需要读了关于该主题和作出选择。

2021-11-24 03:16:08
-1

作为某些属性只适用于某些类别的,你能想到的 实体属性的价值模型,用于储存的类别。

有多种方式的代表EAV模型在一个数据库。 你可以参照下面的文章: https://inviqa.com/blog/understanding-eav-data-model-and-when-use-it

该EAV模型的方式存储的数据来了其自身的挑战,当你查询的数据库。 因此,看是否它将会满足你的需要,在选择同样的。

2021-11-24 03:29:20

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................