数据库公告表-在中添加可执行代码



我有一个包含1000多个项目信息的数据库,我现在正在开发一个系统,该系统将通过常规的Cron Job检查API源代码,并在它们到来时添加新的条目。通常情况下,但并非总是如此,当一个新项目发布时,它的信息会很有限,例如;仅限于图像和名称,有时会在最初保留更多信息,如描述。

有了这个系统,我正在创建一个公告,让每个人都知道新的项目已经发布,所以像大多数公告一样,它们会被提交到数据库,然而,不是将静态内容提交到公告的数据库,是否可以提交一些内容,这些内容将在加载该页面的人执行,并且首先获得公告数据,然后运行中的辅助代码?

,例如,数据库中的可以读取类似以下的内容

<p>Today new items were released!</p>
<?php $item_ids = "545, 546, 547, 548"; ?>

然后在页面上,它将从另一个数据库表中获取项目"的最新已知信息;545546547548〃;

因此,无需返回并编辑任何过去的条目,此页面将保持动态更新。

通常,您会在物品上设置一个日期字段,这样您就可以显示哪些物品在给定日期发布。或者,如果您需要将项目与某种公告记录关联,请创建一个联接项目和公告的查找表。不要在数据库中插入可执行代码,然后将其取出并执行。

CREATE TABLE `announcements` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`publish_date` DATETIME NOT NULL,
`content` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `items` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` VARCHAR(128) NOT NULL,
`description` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `announcement_item_lkp` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`announcement_id` int(11) unsigned NOT NULL,
`item_id` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `announcement_item_lkp_uk1` (`announcement_id`,`item_id`),
KEY `announcement_item_lkp_fk_1` (`announcement_id`),
KEY `announcement_item_lkp_fk_2` (`item_id`),
CONSTRAINT `announcement_item_lkp_fk_1` FOREIGN KEY (`announcement_id`) REFERENCES `announcements` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `announcement_item_lkp_fk_2` FOREIGN KEY (`item_id`) REFERENCES `items` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

使用announcement_item_lkp表,您可以将任意多的项目与您的公告关联起来。由于您有级联删除,如果一个项目被删除,它的查找记录也会被删除,所以您不必担心公告中的孤立引用,就像您只需要在某个地方填充一个ID字符串一样。

您已经在使用关系数据库,让它来完成它的工作吧。

最新更新