Luk*_*101 0 mysql sql sql-server oracle postgresql
我需要动态地在数据库中创建动态表.例如,在数据库中我将有名为的表:
Table
Column
DataType
TextData
NumberData
DateTimedata
BitData
Run Code Online (Sandbox Code Playgroud)
在这里,我可以在名为table的表中添加一个表,然后我可以在columns表中将所有列添加到该表,并将数据类型与每个列相关联.
基本上我想创建表而不在数据库中实际创建表.这甚至可能吗?如果是这样,你能指引我到正确的地方,这样我可以研究吗?另外,我更喜欢sql server或任何免费的数据库软件.
谢谢
Jus*_*ave 14
您所描述的是实体 - 属性 - 值模型(EAV).设计数据模型是一种非常糟糕的方式.
虽然数据模型非常灵活,但查询这样的数据模型非常复杂.n如果要选择或过滤n不同的属性,通常最终必须自动加入表时间.这变得缓慢而且相对较快地变得非常难以优化.
此外,您通常最终会构建数据库或ORM将提供的许多功能.
我不确定你遇到的真正问题是什么,但你提出的解决方案是"数据库中的数据库"反模式,这让很多人感到畏缩.
根据您查询数据的方式,如果您要构建类似于您计划的内容,则需要一组分段查询,这些查询在中间件(慢速)或一个怪物单片查询中加入(或者如果一个甚至是可能的话,会减慢或创造大规模的指数膨胀.
如果必须动态创建表,学习CREATE TABLE ALTER TABLE和DROP TABLEDDL语句为您所使用的特定的数据库引擎.更好的是,找到一个能为你做到这一点的ORM.如果你真正的问题是需要存储非结构化数据,请查看MongoDB,Redis或其他一些NoSQL变种.
我的最后建议是将你想要解决的实际问题写成一个单独的问题,你可能会学到很多东西.