首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在关系数据库中存储“元数据”的正确方式是什么?

在关系数据库中存储“元数据”的正确方式是什么?
EN

Stack Overflow用户
提问于 2013-02-17 15:37:46
回答 5查看 7.9K关注 0票数 3

我有一个名为assets的表,其中的资产可以属于一个用户、团队或部门,也可以是每个用户、团队或部门的倍数。我的问题是,资产是高度可变的,并且可以具有与其关联的属性,这些属性对于每个资产都是不同的。

例如。这些可能是资产:

代码语言:javascript
复制
1.)
type:workbench
cost:200
vendor:Acme Co.
color:black
2.)
type:microscope
serial_no:BH-00102
purchase_date:1337800923
cost:2040

而这可能会持续到数百到数千种不同类型的资产。

我如何以一种易于查询的规范化方式存储这种类型的数据,而不会在每次添加新的资产类型时都更改我的表?其中一些字段也存在于所有资产中,例如成本。

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

代码语言:javascript
复制
assets
id,cost,purchase_date,asset_type_id

asset_types
id,name

division_assets
division_id,asset_id

user_assets
user_id,asset_id

但是我不知道把变化的数据放在哪里。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-17 15:43:57

我建议这样做:

代码语言:javascript
复制
assets (

   id
   asset_type_id
   vendor_id
   cost
   purchase_date

)

asset_poperties (

    id
    asset_id
    asset_property_type_id
    value

)

asset_property_types (

     id
     property_type

)

asset_types (

   id
   asset_type

)

vendors (

   id
   vendor

)
票数 3
EN

Stack Overflow用户

发布于 2013-02-17 16:49:57

当我在过去遇到这个问题时,“最佳”答案总是根据我想要在数据库中进行多少处理而不是在客户端代码中进行多少而变化。

无论如何,过去对我来说最有效的方法通常是每个可选属性一个表(特别是每个实体类型不是一个表)。因此,在上面的示例中

代码语言:javascript
复制
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

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

票数 3
EN

Stack Overflow用户

发布于 2013-02-17 15:50:55

您可以为asset_metadata添加另一个表

代码语言:javascript
复制
asset_metadata
asset_metadata_id,asset_id,metadata_name,metadata_value

如果您想对元数据进行规范化和分类,请按如下方式对其进行规范化:

代码语言:javascript
复制
asset_metadata
asset_metadata_id,asset_id,metadata_name_id,metadata_value

metadata_name
metadata_name_id,metadata_name_text
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14918964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档