Mysql (Laravel) 中哪种方法更适合存储元数据(关键字和描述)?

which method is better to store meta-data (keywords and description) in Mysql (Laravel)?

有 "Articles"、"News" 个表格。我想允许管理员在创建新文章或新闻时添加元标记,如关键字和描述。我已经使用了 laravel 多态关系并且有两种实现方法:

方法一

meta_data Table:

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

.

方法二

meta_data Table:

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

我的问题:

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

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

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

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

现在,第二种方法已规范化并且 SQL 友好,因为使用 INSERT 和 DELETE 可以轻松完成 adding/removing 关键字。这才是真正的方法。

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