2012-04-30 2 views
0

나는 (키와 같은) 몇 가지 다른 테이블에 나타날 필드가있는 데이터베이스를 만들려고합니다. 예를 들어, 나의 리스팅 테이블에서 나는 MLS_ID를 가질 것이다. 이 필드는 listing_photos 테이블에도 나타납니다. 필드 이름의 접두어를 고유하게하려면 : listing_MLS_ID를 예로 들겠습니까?관계형 데이터베이스의 필드 이름을 어떻게 지정해야합니까?

+0

내가 모든 테이블에 열 동일한 이름을 부여 제안하는 내 그것을 이 옵션을 사용하면 조인 조건을보다 쉽게 ​​만들 수 있습니다. 일반적인 열을 합치는 데 'USING'또는 NATURAL JOIN을 사용할 수 있습니다. – eggyal

+0

여기에는 다양한 의견이 있습니다. http://programmers.stackexchange.com/questions/114728/why-is-naming-a-tables-primary-key-column-id-considered-bad-practice – Brad

답변

2

그렇게하는 데 전혀 문제가 없습니다. 당신은 항상 당신의 필드 이름에 데이타베이스와 테이블 이름을 접두사로 붙일 수 있으며, 고유 한 식별자를 얻고 이름 자체를 깔끔하고 간결하게 유지할 수 있습니다.

listings.mls.id 

listings 데이터베이스에 속하는 mls 테이블에 id 필드를 해결합니다.

매우 유연합니다. 긴 고유 식별자가 필요한 경우 언제든지 사용할 수 있습니다.
다른 모든 경우에 짧은 이름을 사용할 수 있습니다.

0

개인적인 취향입니다. 나를 위해

: 내가 기본 키를 제외하고 로컬 테이블 이름 앞에하지 않는

. 예 : PERSON 테이블은 PERSON_ID 열을 가져오고 ADDRESS 테이블은 ADDRESS_ID 등을 가져옵니다.

PERSON_ADDRESS 테이블은 PERSON_ID 및 ADDRESS_ID가 아닌 다른 것을 가져옵니다.

쿼리에서 열 이름은 키와 동등해야 할 때 동일하며 테이블 별칭은 어떤 것이 있는지 알려줍니다.

1

두 테이블 (MLS_ID)의 키 이름을 동일하게 지정하십시오. 이것보다 오히려

SELECT * FROM listings 
JOIN listing_photos 
    USING (MLS_ID) 

: 데이터베이스 서버는 더 간결 USING 절을 사용할 수 있도록함으로써이 일을 위해 당신을 보상

SELECT * FROM listings 
JOIN listing_photos 
    ON listing_photos.listings_MLS_ID = listings.MLS_ID 
+0

그다지 크지 않습니다. 특히 ORM 시대의 보상에 대한 보상입니다. – webbiedave

관련 문제