Database design 存储下拉值的好方法是什么

Database design 存储下拉值的好方法是什么,database-design,drop-down-menu,Database Design,Drop Down Menu,假设您有一个网站,其中包含几个从后端数据库填充的下拉列表。目标是将这些值存储在数据库中,并在渲染表单时检索它们 我见过两种方法: 1每种列表类型一个表: profession_type |id|value| hobby_type |id|value| 2所有查找值的一个表格: |id|type |value| |0 |profession_type|value| |1 |profession_type|value| |2 |profession_type|value| |

假设您有一个网站,其中包含几个从后端数据库填充的下拉列表。目标是将这些值存储在数据库中,并在渲染表单时检索它们

我见过两种方法:

1每种列表类型一个表:

profession_type
|id|value|

hobby_type
|id|value|
2所有查找值的一个表格:

|id|type           |value|
|0 |profession_type|value|
|1 |profession_type|value|
|2 |profession_type|value|
|3 |hobby_type     |value|
|4 |hobby_type     |value|
|5 |hobby_type     |value|

两者都有客观优势。2似乎更为通用—您使用“按类型从表中选择”来填充特定的下拉列表,但该表往往比使用1时要大得多。此外,如果使用2,则所有外键都指向同一个巨型表。这似乎没什么大不了的,但在我看来,这种方法看起来更复杂。

我选择2。您可以检索和缓存所有信息,即使添加了新类型,也不需要更改数据库或检索逻辑

如果要添加和更改表,则需要在将来更改数据库架构,并更改新表的检索代码


此外,您对表格大小的担忧可能是没有根据的。除非你有数百万行,否则一切都会好的。我在想象成百上千行?数据库可以很容易地处理这个问题。

我选择2。您可以检索和缓存所有信息,即使添加了新类型,也不需要更改数据库或检索逻辑

如果要添加和更改表,则需要在将来更改数据库架构,并更改新表的检索代码


此外,您对表格大小的担忧可能是没有根据的。除非你有数百万行,否则一切都会好的。我在想象成百上千行?数据库可以很容易地处理这个问题。

从报告的角度来看,2会让事情变得更加困难,特别是如果您使用的是直接命中数据库的工具,如SSR或Tableau。您需要放入存储过程或视图以使报告成为可能。问题是,在许多报告工具中,多次加入一个表可能会很困难


是的,我完全理解每次你想要一个新的下拉列表时都要添加一个新的表,这在你开发应用程序时是一件很痛苦的事情,但是通过使用选项一,你将拯救一个可怜的BI开发人员,他正受到CEO的斥责。

从报告的角度来看,2会让事情变得更加困难,特别是如果你使用的是直接命中数据库的工具,如SSR或Tableau。您需要放入存储过程或视图以使报告成为可能。问题是,在许多报告工具中,多次加入一个表可能会很困难

是的,我完全理解每次你想要一个新的下拉列表时都要添加一个新的表,这在你开发应用程序的时候是一件很痛苦的事情,但是通过选择第一个选项,你将拯救一个可怜的BI开发人员的背面,他会被CEO大骂