因此,基本问题是:我希望能够将各种字段存储在数据库中。这些可以是短文本框(最多150个字符,大概一般是50个字符)和长文本字段(可以存储一整页的文本)。理想情况下,以后可以添加更多类型。
这些字段是由普通的field_group id组成的,它们的类型不应该与分类有任何关系。
那么在MySQL中表示这个问题的最好方法是什么呢?一个具有不同类型的short_text和long_text列的表,其中一个是NULL?还是有一个更优雅的解决方案?
(我希望这主要是由ease驱动,以便使用给定的field_group_id来选择所有字段。)
澄清
实际上,我试图允许用户创建自己的表,但不需要实际创建表。
因此,您将有一个'Book‘字段组,其中字段'Name’(短文本),‘汇总’(长文本)。那么你就可以在那本书中创建条目了。我意识到这本质上是MySQL的重点,但是我需要有很多这样的东西,并且不希望用户在我的数据库中创建整个表。
发布于 2010-10-11 20:17:15
你要找的东西叫做EAV。使用EAV模型,您可以在世界上只使用插入构建任何异常的数据库。但这真的很可怕,因为很多原因,但你的听起来太可笑了,它可能会起作用。
构建实体表
在这里你会列出
构建属性表。
在这里,您可以从实体和属性列表中列出PK。
我会用这个词来代替PK这个数字。
Cylinders
F 219
然后,在第三个表中,列出每个表的实际值,同样使用单词,但有数字。
如果您想变得棘手,而不是对一个列的值,您可以有4列。
F 241
然后,在属性表中添加一个列,说明要放置数据的列。
如果您计划此数据库为"Multitenent“,则需要添加一个OWNER表作为实体表的父表,这样您和我都可以拥有一个Car实体。
但这对查询、索引、除了玩具应用程序以外的其他任何东西都很糟糕。
https://stackoverflow.com/questions/3902963
复制相似问题