在数据库字段中分隔数据确定

Mar*_*cin 2 database database-design

是否可以在数据库字段中分隔数据?

就像是

create table column_names (
  id int identity (1,1) PRIMARY KEY,
  column_name varchar(5000)
);
Run Code Online (Sandbox Code Playgroud)

然后按如下方式将数据存储在其中

INSERT INTO column_names (column_name) VALUES ('stocknum|name|price');
Run Code Online (Sandbox Code Playgroud)

Nat*_*hes 8

不,这很糟糕:

  • 为了创建新查询,您必须跟踪事物的存储方式.

  • 加入价格或名称或stocknum的查询将是令人讨厌的

  • 数据库无法为数据分配数据类型或对其进行验证

  • 您现在无法对任何此类数据创建约束

基本上你是颠覆了RDBMS的处理和构建自己的方案,因此你限制了RDBMS工具可以帮助你的程度,并且你让新系统更难理解系统.

我能想到的这种系统唯一可能的优点是它可以作为一种解决方法,避免处理一个完全不可能的DBA,他否决了所有架构的变化,无论其价值如何.不幸的是,这可能发生.

当然,一切都是例外.我目前正处于审计日志要求非常严格的项目中.日志记录是对数据库完成的,我们使用分隔字段来存储字段,因为应用程序永远不会与这些数据进行交互,它会被写入一次并保持不变.