gpt4 book ai didi

mysql - 在 Mysql (Laravel) 中存储元数据(关键字和描述)哪种方法更好?

转载 作者:行者123 更新时间:2023-11-29 19:10:23 25 4
gpt4 key购买 nike

有“文章”、“新闻”表。我想允许管理员在创建新文章或新闻时添加元标签,例如关键字和描述。我使用了 laravel 多态关系,并考虑了两种实现方法:

方法1

元数据表:

id   metable_type   metable_id    meta_type      meta_content

1 news 4 description php is a good...
2 articles 7 keywords laravel,relation,tag
3 articles 2 keywords php,developer,html

.

方法2

元数据表:

id   metable_type   metable_id    meta_type      meta_content

1 news 4 description php is a good...
2 articles 7 keyword laravel
2 articles 7 keyword relation
2 articles 7 keyword tag
3 articles 2 keyword php
3 articles 2 keyword developer
3 articles 2 keyword html

我的问题:

还有比这两种方法更好的方法吗?哪种方法更好?

用户应该能够编辑文章或新闻的关键词和描述。

最佳答案

将表名放在列中将不允许您创建外键关系,这会搞砸一切。使用适当的外键创建 news_attributes 和article_attributes 表。

meta_type 不应该是字符串。如果您有多种类型的属性之一,请将这些类型存储在单独的表中,并使用整数外键将它们链接起来。这些很可能是常量,无论如何都硬编码在您的 php 代码中,那么为什么要使用较慢的字符串呢?

现在,第二种方法已经规范化并且对 SQL 友好,因为使用 INSERT 和 DELETE 可以轻松完成添加/删除关键字。这确实是一条必经之路。

在列中存储逗号分隔关键字的唯一优点是能够在其上放置 FULLTEXT 索引。这是唯一可接受的情况。

关于mysql - 在 Mysql (Laravel) 中存储元数据(关键字和描述)哪种方法更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43138654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com