0

在过去一小时的大部分时间里,我一直在查看这段代码,试图找出我的失误。这可能很明显,但是在电脑前呆了这么久之后,我可能只需要第二双眼睛就可以让它弹出。我连接了多个表以使它们保持 1NF 和 2NF,但有两个表让我绊倒。

我有一个名为 my_contacts 的主表,还有一个名为 zip_code 的包含州/城市信息的表。zip_code 保存主键行“zip_code”,my_contacts 保存其外键。

问题是,当我尝试加入他们时,我什么也得不到。我在什么地方搞砸了吗?以下是每个的 SHOW CREATE TABLEs:

对于 my_contacts:

    CREATE TABLE `my_contacts` (
    `contact_id` int(11) NOT NULL AUTO_INCREMENT,
    `last_name` varchar(100) DEFAULT NULL,
    `first_name` varchar(100) DEFAULT NULL,
    `phone` varchar(13) DEFAULT NULL,
    `email` varchar(100) DEFAULT NULL,
    `gender` char(1) DEFAULT NULL,
    `birthday` date DEFAULT NULL,
    `prof_id` int(11) DEFAULT NULL,
    `zip_code` int(11) DEFAULT NULL,
    PRIMARY KEY (`contact_id`),
    KEY `mc_profid_fk` (`prof_id`),
    KEY `my_zip_fk` (`zip_code`),
    CONSTRAINT `mc_profid_fk` FOREIGN KEY (`prof_id`) 
    REFERENCES `profession` (`prof_id`),
    CONSTRAINT `my_zip_fk` FOREIGN KEY (`zip_code`) REFERENCES `zip_code` (`zip_code`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

对于邮政编码:

    CREATE TABLE `zip_code` (
    `zip_code` int(11) NOT NULL AUTO_INCREMENT,
    `city` varchar(50) DEFAULT NULL,
    `state` char(2) DEFAULT NULL,
    PRIMARY KEY (`zip_code`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

提前致谢。

4

1 回答 1

1

zip_codezip_code的 设置为 auto_increment。

对于该表中的该字段,这似乎不是一个可能的选择。你实际存储在zip_code哪里?顺便说一句,我希望实际的邮政编码存储为字符串,以处理前导 0。邮政编码可能看起来像一个数字,但它实际上不是一个(排序不是很明确,算术运算没有意义)。

于 2013-04-02T23:40:53.513 回答