Database design MySQL多对多vs json

Database design MySQL多对多vs json,database-design,relational-database,Database Design,Relational Database,我试图定义一些MySQL关系。我有以下3个表格: employee: | id | first_name | last_name | email notifications: (notification names are email, post etc) | id | name | description employee_notifications: | id | employee_id | notifi

我试图定义一些MySQL关系。我有以下3个表格:

     employee:
     | id | first_name | last_name | email

     notifications: (notification names are email, post etc)
     | id | name             | description

     employee_notifications:
     | id | employee_id | notification_id |
将employee_notifications表更改为使用json_encode在一行中插入员工的所有通知ID有什么优点(或缺点)

到目前为止,大约有100名员工和6种通知方式

将employee_notifications表更改为使用json_encode在一行中插入员工的所有通知ID有什么优点(或缺点)

这有很大的缺点。使用当前设置,您可以轻松找到员工拥有哪些通知,或者哪些员工订阅了特定通知。将其作为JSON放在employees表中会使您无法这样做

将employee_notifications表更改为使用json_encode在一行中插入员工的所有通知ID有什么优点(或缺点)


这有很大的缺点。使用当前设置,您可以轻松找到员工拥有哪些通知,或者哪些员工订阅了特定通知。将其作为JSON放在employees表中会使您失去这样做的能力。

虽然并非总是一种完美的方法,也不适用于所有情况,但随着时间的推移,良好的可维护性是一个很好的经验法则:


在主数据结构中使用良好的规范化(我不会说完全规范化,因为有时这太过分了),并使用视图、存储过程或代码合成数据对象来创建该数据的优化使用视图。

虽然并不总是一种完美的方法,也不适用于所有情况,随着时间的推移,良好的可维护性的经验法则:


在主数据结构中使用良好的规范化(我不会说完全规范化,因为有时这太过分了),并使用视图、存储过程或代码合成数据对象来创建该数据的优化使用视图。

JSON上的全文搜索如何?@JanDvorak效率不高,容易出现OOPSE(搜索ID“123”)可能会找到“1234”),等等,也无法搜索停止词、非词或短词。全文搜索不是为阅读代码而设计的。此外,缺乏结构-如果你想搜索一封带有特定描述的电子邮件,你可以通过一篇帖子找到该描述,该帖子适用于一个附加了不相关电子邮件的用户。你是对的。我确实有一些报告要运行,我知道全文搜索无法工作。看来我得回到以前的db设计类了!!我试图在(json_decode+数组进程)和传统的多对多数据库设计之间进行选择,以生成报告。json上的全文搜索如何?@JanDvorak效率不高,容易出现OOPSE(搜索ID“123”可能会找到“1234”)等,而且也无法搜索停止词、非词或短词。全文搜索不是为阅读代码而设计的。此外,缺乏结构-如果你想搜索一封带有特定描述的电子邮件,你可以通过一篇帖子找到该描述,该帖子适用于一个附加了不相关电子邮件的用户。你是对的。我确实有一些报告要运行,我知道全文搜索无法工作。看来我得回到以前的db设计类了!!我试图在(json_decode+数组进程)和经典的多对多db设计(用于报告生成)之间进行选择。建议删除mysql标记和php标记。这是一个一般的关系数据库设计问题。建议删除mysql标记和php标记。这是一个一般的关系数据库设计问题。