여기, 내 것이요USER
표
CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(100) NOT NULL, `expiry` varchar(6) NOT NULL, `contact_id` int(11) NOT NULL, `email` varchar(255) NOT NULL, `password` varchar(100) NOT NULL, `level` int(3) NOT NULL, `active` tinyint(4) NOT NULL DEFAULT '1', PRIMARY KEY (`id`,`email`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
그리고 여기 내 contact_info 테이블이 있습니다.
CREATE TABLE IF NOT EXISTS `contact_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `email_address` varchar(255) NOT NULL, `company_name` varchar(255) NOT NULL, `license_number` varchar(255) NOT NULL, `phone` varchar(30) NOT NULL, `fax` varchar(30) NOT NULL, `mobile` varchar(30) NOT NULL, `category` varchar(100) NOT NULL, `country` varchar(20) NOT NULL, `state` varchar(20) NOT NULL, `city` varchar(100) NOT NULL, `postcode` varchar(50) NOT NULL, PRIMARY KEY (`id`,`email_address`), ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
시스템은 사용자 이름을 사용하여 사용자를 로그인합니다. 로그인 용 이메일을 사용하는 방식으로 수정하고 싶습니다. 그러나 사용자 테이블에는 email_address가 없습니다.
나는 사용자 테이블 (contact_info의 email_address)에 foreign key - email를 추가했다.
데이터베이스를 어떻게 쿼리해야합니까?
아니, 아니, 아니. 진심으로, 아니. 내가 저기에 와서 주위를 때 리게하지 마라 .-)
전자 메일 주소를 두 번 저장하면 세 번째 정규 양식이 손상됩니다.
관계는 짧은 것일뿐입니다.id
. 두 테이블에서 ID가 동일하다는 것을 보증하지 않는다고 가정합니다 (즉,users.id
반드시 내 동등하지는 않다.contact_info.id
), 그냥ci_id
~로users
테이블에 대한 외래 키 역할을하는 테이블contact_info
표.
그런 다음 사용자의username
과email
다음과 같이 될 것입니다 :
select u.username, ci.email
from users u, contact_info ci
where u.username = 'paxdiablo'
and u.ci_id = ci.id;
그런데 커뮤니티 위키에 대한 질문은 필요 없습니다. 그들은 여기에 완벽하게 적합합니다. 담당자가 있다면 더 많은 답변을 얻을 수 있습니다. 담당자의 부족은 물론 나에게 멈추지 않을 것이다. 나는 사람들에게 무엇을해야하는지 말하기를 좋아하기 때문에 나는 여기에있다. 그것은 강한 의지를 가진 아내와 6 세 미만의 두 아이가있는 가정에서 꽤 어렵다.