gpt4 book ai didi

sql - 如何设计表的列不固定的模式

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:07 24 4
gpt4 key购买 nike

我正在尝试设计一个表的列不固定的模式。例如:我有一个 Employee 表,其中表的列不固定且变化(Employee 的属性不固定且变化)。需要经常添加新属性/列。

  1. Employee 表本身的可空列,即没有规范化

  2. 不是添加可为空的列,而是将这些列分隔到各自的表中,例如:如果 Address 是要添加的列,则创建表 Address[EmployeeId, AddressValue]。

  3. 创建表 ExtensionColumnName [EmployeeId, ColumnName] 和 ExtensionColumnValue [EmployeeId, ColumnValue]。 ExtensionColumnName 会将 ColumnName 作为“地址”,而 ExtensionColumnValue 会将 ColumnValue 作为地址值。

    员工表
    员工编号
    姓名

    ExtensionColumnName 表
    ColumnNameId
    员工编号
    列名

    ExtensionColumnValue 表
    员工编号
    ColumnNameId
    列值

前两种方式有一个缺点,因为架构会随着每个新属性而变化。请注意,添加新属性是经常发生的,也是一项要求。

我不确定这是好设计还是坏设计。如果有人做出类似的决定,请提供有关外键/数据完整性、索引、性能、报告等方面的见解。

最佳答案

查看当前的 NoSQL 数据库可能会有用,这些数据库允许您为每条记录存储任意组键值对。

我建议你看看 couchdb、mongodb、lucene 等......

如果 SQL 数据库中的模式经常更改,这将成为一场噩梦,尤其是在报告方面。

将所有内容放入(rowId、key、value)三元组中是灵活的,但由于记录数量巨大,速度较慢。

ERP 供应商这样做的方式只是制作他们确定的字段的模式,并在固定命名列中添加大量“弹性域”(即 20 个数字、20 个字符串等)并使用查找table 以查看哪个 flexcolumn 对应于什么。这为 future 提供了一些灵 active ,同时本质上具有静态架构。

关于sql - 如何设计表的列不固定的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2932322/

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