문제

최근의 몇 가문 전략을 논의 이름을 짓는 열을,그리고 나는 오히려 놀라운 사실을 발견의 개념을 포함하의 개념은 외국인과의 기본 키를 열 이름이 있습니다.그

select t1.col_a, t1.col_b, t2.col_z
from t1 inner join t2 on t1.id_foo_pk = t2.id_foo_fk

내가 고백하지 못에 근무하는 모든 데이터베이스 시스템을 사용하는 이런 종류의 계획,그리고 내가 무엇인지 궁금 혜택이다.방법은 내가 그것을 한 번,당신이 배운 N 체 테이블의 시스템을 작성합니다 몇 배나 더 많은 요청 사람들과 테이블이 있습니다.

가에서 생산성을 개발,당신은 것을 배울 필요가 있는 테이블은 중요한 테이블 및 있는 간단한 지류.당신하고 싶을 것이 저의 좋은 숫자를 열 이름을 하는 지 확인해 주시기 바랍니다.하나의 기본 작업은 가입하는 두 테이블에 함께합니다.을 줄이 학습과 노력,가장 쉽게 할 것을 보장하는 것은 열 이름과 동일 모두에서 테이블:

select t1.col_a, t1.col_b, t2.col_z
from t1 inner join t2 on t1.id_foo = t2.id_foo

나는 가정으로,개발자,당신은 당신이 필요하지 않는 것을 생각나게 하는 것에 대해 많은 열을은 기본 키가 있는 외국인과는 아무것도 없습니다.그것은 쉽게 충분한 보고에서 스키마 당신이 궁금하다.을 찾을 때에는 임의의

tx inner join ty on tx.id_bar = ty.id_bar

...그것은 모든 중요한 알고 있는 한 외국인 핵심인가?외국의 열쇠는서만 중요한 것은 데이터베이스 엔진,그 자체를 허용하는 그것을 참조 무결성을 보장하기 위해하고 옳은 일 동안 업데이트 및 삭제합니다.

무슨 문제가 해결되고 있는 것일까요?(이 초대를 논의,그리고 느낌을 자유롭게 그렇게 할 수 있습니다.그러나 같은 시간에,나 에 대한 답을 찾고 있는,나이 진정으로 뭔가가).

도움이 되었습니까?

해결책

자식 테이블의 외국 키 열이 부모 테이블의 기본 키 열과 동일한 이름을 가져야한다는 데 동의합니다. 이것은 다음과 같은 구문을 허용합니다.

SELECT * FROM foo JOIN bar USING (foo_id);

사용한 키워드는 열이 두 테이블 모두에서 동일한 이름으로 존재하고 Equi-Join을 원한다고 가정합니다. 이것을 더 장황한 사람에게는 속기로 사용할 수있게하는 것이 좋습니다.

SELECT * FROM foo JOIN bar ON (foo.foo_id = bar.foo_id);

그러나 외국 키를 기본 키와 동일하게 이름을 지정할 수없는 경우가 있습니다. 예를 들어, 자체 참조가있는 테이블에서 :

CREATE TABLE Employees (
  emp_id INT PRIMARY KEY,
  manager_id INT REFERENCES Employees(emp_id)
);

또한 테이블에는 동일한 상위 테이블에 여러 개의 외국 키가있을 수 있습니다. 관계의 특성을 설명하기 위해 열의 이름을 사용하는 것이 유용합니다.

CREATE TABLE Bugs (
  ...
  reported_by INT REFERENCES Accounts(account_id),
  assigned_to INT REFERENCES Accounts(account_id),
  ...
);

열 이름에 테이블 이름을 포함하고 싶지 않습니다. 또한 모든 테이블의 기본 키 열의 이름으로 의무적 인 "ID"를 피했습니다.

다른 팁

나는 당신과 동의합니다. 이 정보를 열 이름으로 넣는 것은 초기 창문의 헝가리 헝가리 표기법의 관용을 때립니다.

나는 결혼하는 대부분의 아이디어를 제안하 여기에는 20 틱 년 동안 나는 개발과 SQL 데이터베이스,나는 당황을 말한다.그들의 대부분을 전달되는 몇 가지 또는 아무도 예상되는 이익 및었으로 돌이켜보면,통증에서 목이 있습니다.

모든 시간을 보냈다 더 보다 몇 시간을 가진 스키마가 나는 상당히 빠르게 익숙해 가장 중요한 테이블 및 그들의 열이 있습니다.면 그것을 가지고 몇 개월 동안,나는 꽤 많이 온 것입니다.

사람은 모든 이에 대한 설명이?사람만을 보낸 몇 분을 디자인하지 않을 수도 심각한 어쨌든.사람의 계획 작업을 오랜 시간 그것을 배울 것입니다 당신의 이름을 열을 산스크리트어로.

을 무시하고 화합물을 기본 키,이런식으로 간단하게 뭔가가"id"되지 않습니다 충분한 기본 핵심,그리고"그리고 우리"외국인을 위한 키를 사용합니다.

그래서 일반적인 조건이 됩 customer.id = order.customer_id.

어디 하나 이상회 사이 두 테이블에 존재하는 더 아름다운 될 수 있습니다 사용하여 협회가 보다는 오히려 테이블의 이름은,그래서 아마도"parent_id"및"child_id"보다는"parent_person_id"etc.

기본 키 (예 : CustomerID)에 대한 ID 접미사와 함께 테이블 이름 만 사용하고 다른 테이블에서 CustomerID라고도 함을 참조하는 외래 키를 사용합니다. 응용 프로그램에서 참조하면 객체 속성 (예 : Customer.telephonEnumber, Customer.CustomerId 등)에서 테이블이 명백해집니다.

나는 외국 키의 앞쪽 끝에 "FK_"을 사용하여 테이블에 주로 테이블에 "내 상점에서 DB를 개발할 때 똑바로 유지하는 데 도움이 되었기 때문입니다. 과거에 DB 작업을하지 않았기 때문에 이것은 저를 도와주었습니다. 뒤늦게, 아마도 나는 그렇게 할 필요가 없었지만, 그것은 일부 열 이름에 세 개의 캐릭터가 땀을 흘리지 않았기 때문에 땀을 흘리지 않았습니다.

DB 앱을 작성하는 새로운 이민자이기 때문에 노련한 DB 개발자가 떨리는 몇 가지 결정을 내릴 수 있지만 외국의 핵심이 실제로 큰 거래라고 확신 할 수는 없습니다. 다시 말하지만, 나는 그것이이 문제에 대한 관점의 차이라고 생각하며, 당신이 쓴 것을 가져 가서 그것을 코게 할 것입니다.

좋은이!

나는 당신에게 동의합니다. 나는 많은 기업 환경에서 권장하는 다른 접근법을 취합니다.

형식의 이름 열 TableNameFieldName, 고객 테이블이 있고 사용자 이름이 내 필드 중 하나라면 필드를 CustomerSername이라고합니다. 즉, 송장이라는 다른 테이블이 있고 고객의 사용자 이름이 외국 키라면 송장 인보 슈토 머스 이름이라고 부르며 참조하면 invoice.customerusername이라고 부릅니다.

또한이 이름 지정을 사용하면 JOIINING에서 열이 나오는 테이블을 추적하는 데 도움이됩니다.

DBMS의 외래 및 기본 키의 실제 이름에서 FK_ 및 PK_ 만 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top