这是一个架构问题,但它的解决方案在于 ColdFusion 和 MySQL 结构——或者至少我是这样认为的。
我的数据库中有一个产品表,每个产品可以有任意数量的屏幕截图。我目前显示产品屏幕截图的方法如下:
我有一个文件夹,其中包含与所有产品相关的所有屏幕截图。所有屏幕截图的名称都与它们在数据库中的产品 ID 完全相同,再加上一个前缀。
例如:productID为15的产品截图在images文件夹中,名称为15_screen1.jpg、15_screen2.jpg等...
在我的 ColdFusion 页面中,我将图像路径硬编码到 HTML (images/) 中;图像名称分为两部分;第一部分是使用查询中的 productID 动态生成的;第二部分是前缀,并且是硬编码的。例如:
<img src"/images/#QueryName.productID#_screen1.jpg">
<img src"/images/#QueryName.productID#_screen2.jpg"> etc...
此方法有效,但它有几个最大的限制,如下所列:
- 我必须在我的 HTML 模板中硬编码屏幕截图的确切数量。这意味着我可以显示的屏幕截图数量将始终相同。如果一个产品有 10 个屏幕截图,而另一个有 5 个,这将不起作用。
- 我必须将图像前缀硬编码到我的 HTML 中。例如,我最多可以有五种类型的屏幕截图与一个产品相关联:productID=15 可能有 15_screen1.jpg、15_screen2.jpg 和 15_FrontCover.jpg、15_BackCover.jpg 和 15_Backthumb.jpg 等...
我考虑过在我的产品表中创建一个路径列,但这意味着为每个产品创建数百个文件夹,这似乎也不太有效。
有没有人对解决这个问题的正确方法有任何建议或想法?
非常感谢!
最佳答案
怎么样...
使用图像表,一个产品到多个图像(带有可选的 sortOrder 列?),并使用 imageID 作为 jpeg 文件名?
更新:
有一个 ImageClass 表,多个 Image 对应一个 ImageClass。
Image
-----
ID
productID
imageClassID (FK to ImageClass)
使用后端业务逻辑强制某些类只能有一个图像。
或者......如果你真的想强制某些类只能使用一张图片,那么可以进行更复杂的设计:
Product
------
ID
name
...
frontCoverImageID
backCoverImageID
frontThumbImageID
backThumbImageID
Image
-----
ID
productID
isScreenShot (bit) // optional, but easier to query later...
但是,我更喜欢第一个,因为您以后可以拥有尽可能多的类,而无需重构数据库。
关于mysql - 使用 ColdFusion 和 MySQL 处理多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2299124/