代码之家  ›  专栏  ›  技术社区  ›  Aaron Yodaiken

在表中存储多种格式

  •  1
  • Aaron Yodaiken  · 技术社区  · 14 年前

    这些字段按公共字段分组 id

    short_text long_text 不同类型的柱,其中之一是 NULL ? 还是有更优雅的解决方案?

    (我希望这主要是由轻松选择具有给定字段组id的所有字段驱动的。)

    澄清

    因此,您将拥有一个“Book”字段组,它将具有字段“Name”(短文本)、“Summary”(长文本)。然后你就可以在那本书中创建条目了。我意识到这基本上就是MySQL的重点,但我需要有很多这样的东西,不希望用户在我的数据库中创建整个表。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Stephanie Page    14 年前

    你要找的是一个EAV。有了EAV模型,您可以只使用insert来构建世界上任何令人抓狂的数据库。但这真的很可怕,有很多原因,但你的听起来很疯狂的曲调,它可以工作。

    生成实体表

    在这里你会列出

    • 小型车
    • 植物

    建立属性表。

    这里列出了实体的主键和属性列表。

    • 汽车发动机气缸
    • 汽车品牌
    • 人名
    • 姓名

    • 汽车发动机气缸4
    • 人名斯蒂芬妮
    • 姓名第页

    如果你想在一个列上得到更复杂的值,你可以有4列

    • 一个数字

    然后,在属性表中可以添加一个列,说明要放置数据的列。

    但这对于查询、索引、除了玩具应用程序之外的其他应用程序来说都很糟糕。

        2
  •  0
  •   Alec    14 年前

    我不知道您所说的“字段组”到底是什么意思,但是如果信息(短文本、长文本)都属于某个条目,则可以创建一个表并包含所有这些列。

    假设你有一堆有标题和摘要的书:

    table: `books`
    - id, int(11) // unique for each book
    - title, varchar(255)
    - writer, varchar(50)
    - summary, text
    - etc

    默认情况下,不需要设置的字段可以设置为空。

    SELECT * FROM books WHERE id = 1

    或者一些领域:

    SELECT title, writer FROM books ORDER BY title ASC