Vid*_*dar 4 database-design polymorphic-associations
我正在尝试设计一些数据库表来存储有关某些实体及其关联的应用程序的配置设置.我可以到目前为止,但已经打了一个"砖墙".我会告诉你我的意思......(不要采取以下措施:图片,作为一个文字业务问题,图片只是向你解释我的问题的一种简单方法).
标准
请记住,每个应用程序都有一个特定且独特的方式,可以配置它来显示图片.
因此很明显我们需要2个表PICTURE和APPLICATION以及一个联结表来显示MM关系,因为许多图片可以在许多应用程序中使用 - 见下文:

我用红色突出显示了"CONFIG_TABLE"栏目 - 我非常怀疑这是坏事,非常非常糟糕.它显示对于特定应用程序,这是用于存储设置的配置表.请参见下文:

所以 - 根据您正在谈论的应用程序,有非常特殊的应用程序配置应用于图片.现在假设设计被破坏,我相信它是 - 我如何设计数据库来正确建模?(希望这是有道理的)
设计与正确的设计相差不远.您根本不需要该application.config_table列.相反,每个应用程序应该知道哪个表与其自己的图片使用有关.
例如,在PicManager应用程序中,您可以这样做:
SELECT p.*, c.*
FROM Picture_Appliation AS pa
INNER JOIN Picture AS p ON pa.pic_id = p.pic_id
LEFT OUTER JOIN Picman_Config AS c ON p.pic_id = c.pic_id
WHERE pa.app_id = 100;
Run Code Online (Sandbox Code Playgroud)
在每个其他应用程序中,您将在查询中编写不同的配置表.
不要试图使它太"自动"或"数据驱动".只需编写适合每个应用程序的代码.您可以将数据驱动的方法用于数据值(例如app_id = 100),但不能使用代码.数据就是数据.代码是代码.
您可能只想编写一个可用于所有应用程序的可重用类,但这就是子类的用途.
| 归档时间: |
|
| 查看次数: |
630 次 |
| 最近记录: |