2017-09-25 3 views
-1

두 개의 열 (이름, 전화 번호)이있는 테이블 하나가있는 데이터베이스가 있는데, 일대 다 관계를 만들어 동일한 사람이 많은 링크 또는 전자 메일을 가질 수 있도록했습니다. SQL & PDO와 PHP를 알고 있습니다.두 테이블간에 일대일 관계를 만드는 방법은 무엇입니까?

예를 들어 누군가 John이라는 사람과 그의 전화 번호가 78747384323입니다. 동일한 사람이 많은 링크를 가지고 있습니다. 따라서 데이터베이스에서 그의 이름을 클릭하면 모든 링크가 표시됩니다.

같은 사람은 같은 이름과 번호 만 다른 링크 데이터베이스에 한 번 이상 삽입 할 수 있습니다

어떻게 달성하기 위해? 그래서 처음으로 이름과 전화 및 링크 하나를 삽입하면 이름과 번호가 첫 번째 테이블에 추가되지만 두 번째 테이블에 대한 링크가 추가되고 같은 사람이 같은 이름과 번호로 다시 삽입 될 때 다른 링크, 링크는 이전 링크에 추가됩니다.

+0

난 당신이 외부 키에 대해 알고하지만 당신은 몰랐어요 경우 그와 함께 시작하면 잘 모릅니다 (쿼리 예제를 보여주기 위해 편집). – Loko

+0

https://stackoverflow.com/questions/12402422/how-to-store-a-one-to-many-relation-in-my-sql-database-mysql – bc2946088

+0

이것은 실제로 두 가지 질문입니다. 하나는 데이터베이스 설계에 관한 것이고 다른 하나는 레코드 추가에 관한 것입니다. 한 번에 하나씩해라. 디자인으로 시작하십시오. –

답변

0

테이블이 2 개 있어야합니다. 첫 번째는 users이고 두 번째는 user_details입니다. 첫 번째 테이블에는 고유 한 필드가 있어야합니다. 예. mobile. namemobile을 삽입하기 전에 모바일이 있는지 확인해야합니다. 모바일이있는 경우 linkemail을 다른 테이블 (user_details)에 삽입하십시오. user_details 테이블에는 링크와 이메일 관계를 지정할 사용자를 식별하는 열 user_id이 있어야합니다.

0

위의 Loko의 의견대로 - 외래 키가 필요합니다. 기본적으로 당신의 '사람'테이블은 'personid'로 기본 키가 있어야합니다

CREATE TABLE person (
    personid int not null auto_increment, 
    name varchar(50), 
    phone varchar(20), 
    primary key (personid) 
) 

이메일 테이블이 다음 외래 키로 이것을 참조 할 것 - 즉

CREATE TABLE email (
    emailid int not null auto_increment, 
    emailaddress varchar(100), 
    personid int, 
    primary key (emailid), 
    foreign key (personid) 
    references person(personid) 

) 

(추가 편집 기본 키

이것은 한 사람이 많은 이메일 주소 (각 이메일 주소는 personid '소유자'로 찍혀 있음)를 가질 수있는 일대 다 관계를 맺을 것입니다.

SELECT emailaddress FROM email WHERE personid = 1234 

만 자신의 이름이 조인 할 수있는 알고있는 경우 :

그래서이 예제에서 당신이 어떤 사람에 속하는 모든 이메일 주소를 보여주고 싶었다 경우 당신이 알고 그들의 당신은 할 수있는 'personid' :

SELECT email.emailaddress 
FROM email 
INNER JOIN person ON person.personid = email.personid 
WHERE person.name = 'Jon Byjovi' 

관련 문제