我的任务是创建一个物理事件记录系统,在该系统中,员工将基于纯粹为记录目的而发生的物理事件创建事件。例如,假设他们接听电话-然后必须创建“电话”事件并填写呼叫者,呼叫原因和呼叫时间。
每个event
都将具有相同的输入字段,可以输入,但是,其中一些字段需要附加的输入字段,这些输入字段只能由特定的event_types
访问。
以下是该模式的摘要:
table: event_types
| column | type |
|--------|---------|
| id | integer |
| name | varchar |
table: events
| column | type |
|---------------|----------|
| id | integer |
| report_id | integer |
| user_id | integer |
| event_type_id | integer |
| date | datetime |
| details | text |
| locations | json |
| people | json |
| data | json |
基本上,event_type_id
可以是50多种事件类型之一。其中只有15个需要唯一字段。在安装应用程序时,这些事件类型是静态的(它们已植入到数据库中),用户将不会在应用程序本身中创建它们。
locations
,people
和date
字段将在每个事件上可用。我最初的想法是要有一个data
json
字段来存储其他输入字段数据。
但是,我不确定这是否是根据特定event_type_id
处理唯一输入字段的最佳方法。我也不确定如何根据event_type_id
验证这些唯一字段。
是否最好对event_type_id
进行硬编码,然后根据创建事件的event_type_id
分配验证规则?我还想知道渲染表单视图以加载到其他输入字段时如何处理。
我还考虑过将验证规则和视图名称存储在event_types
表中,但是我认为这样做可能是一种不好的做法,因为我需要更新event_type
中的记录我想随时添加另一个字段的数据库。
我真的很希望从那些必须实现处理数据库中唯一字段的人那里获得一些建议-我真的不确定如何正确地处理它……非常感谢您的时间!
编辑:我使用了混合功能-Entity-Value-Model和json数据字段的非常有限的版本。我将在未来几天内为他人发布完整的实施方案,以防它对任何人有帮助。