我想问下数据库建表的问题。所有表名存放在一张数据库表。所有列名放在一张数据库表。这样是否合理

我想问下数据库建表的问题。    所有表名存放在一张数据库表。所有列名放在一张数据库表,记录表的id,列名也有自己的id,  我想问下这样建表是否合理,优势劣势在哪里?  

备考FCRP 发布于 2021-2-20 09:36
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
地球刘亦菲Lv6初级互助
发布于2021-2-20 09:42

你这个其实不需要特地去建立的,像oracle里select * from user_tab_columns 就可以看到用户名下的所有表,列以及相关的信息

  • 备考FCRP 备考FCRP(提问者) 我想问下这样建表, 和那种 物料一个表,客户一个表,用户一个表的区别。
    2021-02-20 09:44 
  • Scyalcire Scyalcire 回复 备考FCRP(提问者) 物料,客户那种是具体存放业务数据的表 数据库自己有系统表是存放你的数据库模式下面有哪些表(这些表就是你指的物料,客户)
    2021-02-20 09:48 
  • 地球刘亦菲 地球刘亦菲 回复 Scyalcire 不同的表分开建,前期你会觉得表少比较好管理,但是当数据量增大的时候,不仅影响效率还增加了理解的难度
    2021-02-20 09:54 
最佳回答
0
ScyalcireLv7中级互助
发布于2021-2-20 09:42

我想问下这样建表的初衷是什么....

  • 备考FCRP 备考FCRP(提问者) 是这样的,因为业务表可能频繁的添加或者删除字段,怕更改表结构。 所以考虑这样设计, 表1存放所有表名。表2存放所有列名,记录表名id。表3是具体业务表,存放所有列名的id,和字段值value。 这样我增加字段的时候,只需要增加列名表插入一行记录,而不是插入一列,不破坏表结构,减少代码的修改。
    2021-02-20 10:22 
  • 备考FCRP 备考FCRP(提问者) 这样设计会有问题吗?
    2021-02-20 10:22 
  • Scyalcire Scyalcire 回复 备考FCRP(提问者) 以我现在接触到的数据库表(有限的),比如用友ERP的数据库表,他们不在万不得已的情况下是不会去更改表结构的,因为业务上的表,在ERP里面是联动的,可能改了这一张表的结构,其他的也要跟着动 所以他们在建立业务表时候,除已经确定名字的列名,还建立了30个左右的自定义列名(即备用字段),这样想要新增的列名的话,直接占用自定义字段即可,不会去更改表结构 按照你这样的设计,你需要清楚的一件事就是,因为你说业务可能会频繁删除,添加字段,那这部分维护的工作量会非常大,而且新增字段还好,物理删除字段,是绝对不建议在数据库进行操作的,一删这列数据全没了,而你采用自定义备用字段,如果想要删,那直接就不用这个字段就行了,而且历史数据还在
    2021-02-20 10:33 
最佳回答
0
snrtuemcLv8专家互助
发布于2021-2-20 09:42

数据库自己本来就有记录表名和列名的表啊,

这个设置肯定是合理的

  • 4关注人数
  • 409浏览人数
  • 最后回答于:2021-2-20 09:42
    请选择关闭问题的原因
    确定 取消
    返回顶部