目前,我在此处添加了“在此处添加您的广告”页面。
现在,用户必须选择要将广告发布到...
的类别所以我在mysql中为每个类别都有一个表。
现在我的问题是,如何使用ID nr使每个广告独一无二? 如果我有几张桌子,某些广告中的“自动增量”可能会相同,我是对的吗? 这通常如何解决? 使用javascript为每个广告分配一个随机的nr?
请记住:我还有一个'图片上传'文件输入,我必须将图片名称设置为与广告ID相同...
由于
更新: 如果我将所有广告放在一个表中,这会不会减慢数据库的搜索速度?还有其他办法吗?
答案 0 :(得分:2)
这是规范化的问题。广告是一个独特的对象类,所有广告都应该在SAME表中。同样,类别应位于同一个表格中,然后您应在广告记录中添加类别ID,前提是您需要引入类别数据。
编辑:不,不应该是一个问题。我看过报纸广告系统在该模型上运行,有数百万个广告(它们通常按广告存储,然后按个人“运行日期”存储,因此1条广告记录可能有100条运行日期记录),并且不会显着时间来查询。只是弄清楚你将如何访问广告(按日期,按类别等)并相应地设置你的索引,你应该没事。
答案 1 :(得分:1)
是的,您可以使用ID来使每个广告都是唯一的,在这种情况下,ID可能会自动递增。要解决具有相同ID的多个广告的问题,请将所有广告放在一个表格中,然后添加一个存储广告类别的列。
将新广告插入数据库后,立即使用函数mysql_insert_id()
以获取上次自动增加的ID。将其用于图片名称。
答案 2 :(得分:1)
是否可以创建一个包含列的表来跟踪插入的每个广告的类别?这样,自动生成的id将始终是唯一的。从长远来看,这种方法可能更容易维护。
答案 3 :(得分:0)
只要您不手动重置ID,设置自动增量将始终大于添加的最后一个。
如果您想以不同的方式做事,请使用随机生成的UUID。 MYSQL有built in UUID() function来帮助。
答案 4 :(得分:0)
听起来您需要处理数据库架构。我建议使用auto_increment主键为所有广告建议一个表,无论其类型(包括ad_type
字段,以便区分它们)。如果广告只能有一张图片,您也可以在ad
表格中存储该文件的路径。否则,创建一个单独的ad_pictures
表,其外键引用ad_id
。
当您插入ad
表格时,您可以获取last_insert_id()
并将其用于创建ad_pictures INSERT
查询。
答案 5 :(得分:0)
如果您在提交表单之前绝对需要知道图片名称,那么您可能需要考虑在显示表单时生成UUID。使用UUID作为广告ID和图片名称。
但是很有可能,你想要的是:在表单提交期间接受图片上传,处理提交,插入行,获取行ID,然后根据该ID保存图片。
只要您正确规范化您的数据库(例如,所有广告只有一个表,所有类别只有一个表,也可能是连接两个表的中间表)并使用自动递增的主键作为广告ID,则你应该没事。