初投稿はこちら..
組み込み型 (ジオメトリ、ポイント、ラインストリングなど) を使用せずに、いくつかの基本的な空間テーブルを実装したい
大学の演習を実装するには、これを行う必要があります。
提案された分析は次のとおりです。
ポイント( Point_ID、X、Y)
セグメント( Segment_ID、 From_Point 、 To_Point )
ポリライン( Polyline_ID、 Segment_ID 、 Line_Seq_No )
リージョン( Region_ID、 Polyline_ID 、 Region_Seq_No )
上記を使用して、次のテーブルを作成します(mysqlで)
CREATE TABLE IF NOT EXISTS `points` (
`point_id` int(11) NOT NULL AUTO_INCREMENT,
`x` int(11) NOT NULL,
`y` int(11) NOT NULL,
PRIMARY KEY (`point_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `polylines` (
`polyline_id` int(11) NOT NULL AUTO_INCREMENT,
`segment_id` int(11) NOT NULL,
`line_seq_no` int(11) NOT NULL,
PRIMARY KEY (`polyline_id`),
KEY `segment_id` (`segment_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `regions` (
`region_id` int(11) NOT NULL AUTO_INCREMENT,
`polyline_id` int(11) NOT NULL,
`region_seq_no` int(11) NOT NULL,
PRIMARY KEY (`region_id`),
KEY `polyline_id` (`polyline_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `segments` (
`segment_id` int(11) NOT NULL AUTO_INCREMENT,
`from_point` int(11) NOT NULL,
`to_point` int(11) NOT NULL,
PRIMARY KEY (`segment_id`),
KEY `from_point` (`from_point`),
KEY `to_point` (`to_point`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ALTER TABLE `polylines`
ADD CONSTRAINT `polylines_ibfk_1` FOREIGN KEY (`segment_id`) REFERENCES `segments` (`segment_id`);
ALTER TABLE `regions`
ADD CONSTRAINT `regions_ibfk_1` FOREIGN KEY (`polyline_id`) REFERENCES `polylines` (`polyline_id`);
ALTER TABLE `segments`
ADD CONSTRAINT `segments_ibfk_2` FOREIGN KEY (`to_point`) REFERENCES `points` (`point_id`),
ADD CONSTRAINT `segments_ibfk_1` FOREIGN KEY (`from_point`) REFERENCES `points` (`point_id`);
この上記の実装が正しいアプローチであるかどうかはわかりません..
データをポイントとセグメントテーブルに格納する方法を理解しています。
しかし、ポリラインやリージョンを保存する方法がわかりません。たとえば、line_seq_no には何を保存する必要がありますか? seq=>sequence ですが、セグメントのシーケンスを格納する場合、クエリでこのセグメントを取得するにはどうすればよいですか?
事前にThx