我正在尝试设计一个数据库,该数据库的表包含所有提供感兴趣的服务的公司,然后我需要一种方法来为每个公司存储到每个可能的邮政编码(〜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/

10-12 22:40