php - php/mysql 邮件程序帮助

标签 php mysql

我正在开发一个房地产网站,需要制作通知邮件:当在网站上插入新特性时,在该特定国家和/或地区和/或城市和/或特定特性订阅通知的人操作(租赁、出售)将收到电子邮件通知。一个人可以订阅不同的地区、城市等,而不仅仅是一个。不过,一个人每周只会收到一份通知,比如是否有新特性适合他。我正在考虑如何更好地为订阅者创建一个 mysql 表,以便轻松检索它们。表格如下:

create table subscribers(
user_email varchar(255),
area_id int(4));

是一个坏主意,因为如果有 100,000 个(展望 future )订阅者,每个订阅者订阅 10 个区域,那么表中将有 1,000,000 行。因此,我正在寻找有效的解决方案来完成此类任务。

如果您有其他建议,我很想听听。

提前致谢!

最佳答案

您应该使用交叉引用(多对多)表。这将使数据更加规范化:

CREATE TABLE `areas` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(255) NOT NULL
  PRIMARY KEY  (`id`)
)


CREATE TABLE `subscribers` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `email` varchar(255) NOT NULL
  PRIMARY KEY  (`id`)
)


-- cross ref table
CREATE TABLE `areas_subscribers` (
  `area_id` int(10) unsigned NOT NULL,
  `subscriber_id` int(10) unsigned NOT NULL,
  UNIQUE KEY (`area_id`,`subscriber_id`)
)

一百万行不是问题。特别是有交叉引用表。

关于php - php/mysql 邮件程序帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2978076/

相关文章:

Mysql统计并只返回一行数据

php - 按子查询排序,其中另一列与 id 匹配

php - 如何获取Linux系统的具体路径

php - 带 float /小数的字母数字

php - fatal error : Call to a member function getId() on a non-object in/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController. PHP

mysql - 使用 Navicat 聚合年初至今的收入

带内连接的 Mysql 查询

mysql - 使用 SQL 根据单条记录的更改来更改多条记录

php - MySQL奇偶自增ID

php - 比较不同表中两列的 SUM()?