2

2 つの都市間の距離に関するデータを保持する必要があるアプリケーションを開発しています。

2 つの都市の名前とそれらの間の距離を保持する Mysql データベースに距離テーブルを作成しました。2 つの町の列を複合主キーにしました。

スクリーンショットに示すように、アプリケーションが重複した逆のエントリを作成しないようにデータベースに制限して、距離の値が異なるのを防ぎたいと思います。

この問題を解決するための最良の解決策は何ですか?

可能なはずのない逆の都市エントリを含む距離テーブルのスクリーンショット

4

2 に答える 2

2

このテーブルに挿入するストアド プロシージャを作成できます。

DELIMITER $$
CREATE PROCEDURE insert_distance(IN p_town1 varchar(50), IN p_town2 varchar(50), IN p_distance int)
BEGIN
INSERT INTO distance(town1, town2, distance)
SELECT LEAST(p_town1, p_town2), GREATEST(p_town1, p_town2), p_distance;
END $$
DELIMITER ;

この手順のみを使用して挿入すると、エントリが既に存在する場合にエラーがスローされることを確認できます。また、間違った順序で誤って町を挿入することもありません。

于 2013-11-07T13:33:45.640 に答える