gpt4 book ai didi

mysql - 在关系数据库中存储 'metadata' 的正确方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 07:56:43 25 4
gpt4 key购买 nike

我有一个名为 assets 的表,其中 Assets 可以属于用户、团队或部门,并且可能属于多个。我的问题是 Assets 是高度可变的,并且可以具有与之关联的属性,每个属性都不同。

例如。这些可能是 Assets :

1.)
type:workbench
cost:200
vendor:Acme Co.
color:black
2.)
type:microscope
serial_no:BH-00102
purchase_date:1337800923
cost:2040

这可能适用于成百上千种不同类型的 Assets 。

我如何以易于查询的规范化方式存储此类数据,而无需在每次添加新 Assets 类型时都更改我的表?有些字段也存在于所有 Assets 中,例如成本。

到目前为止,我认为我应该:

assets
id,cost,purchase_date,asset_type_id

asset_types
id,name

division_assets
division_id,asset_id

user_assets
user_id,asset_id

但我不知道将变化的数据放在哪里

最佳答案

当我过去遇到这个问题时,“最佳”答案最终总是会有所不同,具体取决于我想在数据库中进行多少处理,以及在客户端代码中进行多少处理。

就其值(value)而言,过去对我最有效的方法通常是每个可选属性一个表(特别是,不是每个实体类型一个表)。所以,在你上面的例子中

assets (as per your example)
asset_types (as per you example)
division_assets (as per your example)
user_assets (as per your example)
colours
asset_id, colour
weights
asset_id, weight
serial_numbers
asset_id, serial_number

当然,根据您需要做出的权衡,这对您来说可能是一个糟糕的选择。就个人而言,我喜欢尽可能明确地保持数据模式,包括数据类型和约束,这样下次出现新属性时我就不会更改表。

关于mysql - 在关系数据库中存储 'metadata' 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14918964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com