我的问题涉及一个带有mysql数据库的php网站。
目前在数据库中我们有一个'令牌'实体
令牌可以容纳0个或更多“对象”实体,并且这些对象中的每一个都可以是x,y,z类型
所以
----------
| Token |
|--------|
--------------
|token_object|
| |
|tokenID |
|objectID |
--------------
------------
| object |
| |
|objectType|
------------
------------ --------- ---------
| objectX | |objectY| |objectZ|
| | | | | |
------------ --------- ---------
现在这很好用,因为当我想要一个对象的数据时,由于我们的缓存系统的性质,它几乎总是一个对象,我只能做两个查询来从object和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)
但这似乎不是一个非常干净的解决方案,尤其是新表的创建
有没有更好的解决方案?
值得注意的是,我希望相对于令牌有很多对象,并且额外对象类型的创建不会发生很多/几乎从不
答案 0 :(得分:1)
你到底存的是什么?是否需要针对它的复杂查询,或者您是否需要通过id进行简单的对象存储?在后一种情况下,您可以创建一个具有ID,类型和数据的表,其中数据是您可以在代码中恢复的序列化对象(例如,将对象存储为JSON,并使用存储对其进行反序列化)输入和数据)。如果这不能满足您的需求,那么您的问题中会有更多的背景。