我正在尝试设计一个数据库,该数据库的表包含所有提供感兴趣的服务的公司,然后我需要一种方法来为每个公司存储到每个可能的邮政编码(〜10.000)的距离。
这个想法是每个公司都在特定的距离内运营,该距离会不时变化。
我有3个想法,但没有一个真的感觉正确:
有一个表格,其中每个邮政编码都有一行,而每个公司都有一列(60 * 10.000),并将距离存储为值。问题我将需要使用公司ID作为列名,并且不知道这是否是正确的方法。
每个公司都有一个新表,该表具有列邮政编码和距离(2 * 10.000)。问题公司ID是表名,再次不确定那是不是正确的方法。
具有3列CompanyID,邮政编码,距离(3 * 600.000)的表。感觉最正确,但是将意味着很多行。
谁能告诉我是否有更好的方法或选择哪种选择?
最佳答案
您应该做最后一个选择。只要设置了索引,您就不必担心行太多。这是一个示例实现(MySQL):
CREATE TABLE `company`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50),
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
CREATE TABLE `post_code`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`postal_code` VARCHAR(10),
) ENGINE=InnoDB;
CREATE TABLE `distance`
(
`comnpany_id` INTEGER NOT NULL,
`post_code_id` INTEGER NOT NULL,
`distance` FLOAT NOT NULL,
PRIMARY KEY (`company_id`,`post_code_id`),
CONSTRAINT `distance_FK_1`
FOREIGN KEY (`company_id`)
REFERENCES `company` (`id`)
ON DELETE CASCADE,
CONSTRAINT `distance_FK_2`
FOREIGN KEY (`post_code_id`)
REFERENCES `post_code` (`id`)
ON DELETE CASCADE
) ENGINE=InnoDB;
关于mysql - 数据库设计-将每个公司与所有可能的邮政编码联系起来以存储距离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35667732/