Newer
Older
Loremap / DBschema.md

データベーススキーマ

TABLE: mapitem

カラム 意味
ename Entity Name ユニークな名前(主キー)
name 一般名称
addr 住所
lat 緯度
lon 経度

TABLE: maptype

カラム 意味
ename Entity Name FOREIGN KEY(ename) REFERENCES mapitem(ename) on delete cascade on update cascade
maptype 地図種別

TABLE: attribute

カラム 意味
ename Entity Name FOREIGN KEY(ename) REFERENCES mapitem(ename) on delete cascade on update cascade
attr 属性名
value 属性値

TABLE: object

カラム 意味
ename Entity Name FOREIGN KEY(ename) REFERENCES mapitem(ename) on delete cascade on update cascade
objtype 地点の種別(point, multiline, polygon)
jsonval 地物(ちぶつ)のマーカ/ライン/ポリゴン のJSON表記値

SQL文

CREATE TABLE IF NOT EXISTS mapitem(
  ename PRIMARY KEY, name TEXT NOT NULL, addr TEXT, lat REAL, lon REAL
);

CREATE TABLE IF NOT EXISTS maptype(
  ename, maptype TEXT,
  FOREIGN KEY(ename) REFERENCES mapitem(ename)
  ON DELETE CASCADE ON UPDATE CASCADE,
  UNIQUE(ename, maptype)
);

CREATE TABLE IF NOT EXISTS attribute(
  ename, maptype TEXT,
  FOREIGN KEY(ename) REFERENCES mapitem(ename)
  ON DELETE CASCADE ON UPDATE CASCADE,
  UNIQUE(ename, maptype)
);

CREATE TABLE IF NOT EXISTS object(
  ename, objtype TEXT, jsonval TEXT,
  FOREIGN KEY(ename) REFERENCES mapitem(ename)
  ON DELETE CASCADE ON UPDATE CASCADE,
  CHECK (objtype IN (
      'point', 'multipoint', 'linestring',
         'multilinestring', 'polygon', 'multipolygon')),
  UNIQUE(ename, objtype, jsonval)
);