国、地域、町のテーブルを関連付けるための最良の方法を見つけようとしています。
私のウェブサイトでは、ユーザーが町に入るだけでいいようにしたいと思っています。次に、オプションで国と地域を入力します。どちらも入力する必要があるか、まったく入力しない必要があります。
現在、私のテーブルはそのようなものです
tbl>ユーザーはtownID(FK)を持っています
tbl> town has id(PK)townName regionID(FK DEFAULT NULL)
tbl> region has id(PK)regionName countryID(FK NOT NULL)
tbl>国にはid(PK)countryNameがあります
私はおそらくユーザーと町の関係をさらに吐き出すと思いました:
tbl> User has locationID(FK)
tbl> location has id(PK)townID(FK)regionID(FK)countryID(FK)
しかし、それは不要であり、問題をさらに複雑にしていると思いますか?
国データベースはすでに入力されています。ユーザーが入力した町>地域>国の関係についての独自の参照を作成するつもりです。したがって、ユーザーが地域と国のない町に入ると、地域IDのない同じ名前の町がまだない場合は、regionIDのないtbl>townに入力されます。これは、ユーザーが地域と国のIDを入力した町でも同じです。入る前に、町>地域>国の関係がすでに存在していないことを確認するだけです。サイトの開発の後半で、ユーザーが入力した町に基づいて国/地域のAjax提案を提供します。
だから質問に:
データが重複したり、データが上書きされたりする可能性があるなど、これに関する落とし穴を想像することができます。私の希望する方法に合うようにテーブルを構築するためのより良い方法はありますか?
これは前の質問で答えられるかもしれません:しかし、テーブルのPHP処理を減らすために私ができることはありますか。もちろん、PHPステートメントを1つだけ挿入したいのですが、一度に挿入するには注意点が多すぎると思います。
また、ユーザーの町のエントリはnullである可能性があり、地域への外部キー参照が含まれる場合と含まれない場合があるため、それを考慮したビューを作成するのに最適な方法はありますか?
ホストされるので、MySQL関数は使用しません。
説明が必要な場合はお知らせください。続行する前に、これを最初に正しく理解したいので、あなたの助けは非常に貴重です。