2012-04-30 10 views
0

私はいくつかの異なるテーブル(キー)に現れるフィールドを持つデータベースを作成しようとしています。たとえば、私のリスティングテーブルでは、私はMLS_IDを持っています。このフィールドは、listing_photosテーブルにも表示されます。一意にするためにフィールド名の前に付ける必要があります:例としてlisting_MLS_ID?リレーショナルデータベースのフィールドの名前はどのようにしたらいいですか?

+0

:むしろこれより

SELECT * FROM listings JOIN listing_photos USING (MLS_ID) 

:あなたはより簡潔なUSING句を使用させることでこれを行うためのデータベース・サーバーの報酬あなたを(これにより、結合条件がより簡単になります。共通の列を組み合わせるには、 '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 
    ON listing_photos.listings_MLS_ID = listings.MLS_ID 
+0

本当に報酬は、特にORMの日と年齢です。 – webbiedave

関連する問題