我的问题与一个带有 mysql 数据库的 php 网站有关。
目前在数据库中,我们有一个“令牌”实体
一个令牌可以包含 0 个或多个“对象”实体,这些对象中的每一个都可以是 x、y、z 类型
所以
----------
| Token |
|--------|
--------------
|token_object|
| |
|tokenID |
|objectID |
--------------
------------
| object |
| |
|objectType|
------------
------------ --------- ---------
| objectX | |objectY| |objectZ|
| | | | | |
------------ --------- ---------
现在这工作正常,因为当我想要来自一个对象的数据时,由于我们缓存系统的性质,这个对象几乎总是一个对象,我可以进行两次查询以从对象和 objectX/Y/ 中获取数据Z
(SELECT * FROM object WHERE id = $id)
和
switch($objectType)
case 'objectX':
SELECT * from ObjectX WHERE id = $id
case 'objectY':
etc etc..
但现在我被要求允许网站用户创建新的对象类型,即 objectA/B 等。
我可以为每个新的对象类型创建一个新的 objectXn 表,并为 objectType 选择一个可以工作的好值
(SELECT * FROM $objectType WHERE blabla)
但这似乎不是一个非常干净的解决方案,尤其是创建新表
有没有更好的解决方案?
值得注意的是,我希望有很多与令牌相关的对象,并且创建额外的对象类型不会发生很多/几乎永远不会发生