私は、Web SQL、indexedDB、おそらくはlocalStorage/JSONを抽象化するための小さくシンプルなAPIを書いています。 APIを使用すると、実際に使用されているデータベースがindexedDBまたはlocalStorage/JSONデータ構造であっても、プログラマはデータベースを小さなリレーショナルデータベースと考えることができます。indexedDB XMLスキーマ?
"標準的な"方法があるかどうかわかりませんが、データベースの構造をXMLスキーマで定義されたリレーショナルデータベースとして表現しています。最終的な製品は、xsd - > xml(スキーマに従い、dbを定義する) - > javascript api - >(indexeddb/wwebsql/localStorage-JSON)のようになります。良いアイデア?心配してください、パフォーマンスはAPI内でチューニングすることができます。つまり、私はindexedDBがリレーショナルデータベースではないことを知っています。それを表現するものはそれほどユニオンではありませんが、API自体はindexedDBでindexedDBとWeb SQLで動作します。
これで、私はあなたに私のスキーマを提示しました。私はそれをとてもシンプルに保ちたい。可能な限り簡単です。あなたはこれを改善することができますか?私が追加したいのは、フィールドの定義された型です。フィールドは属性タイプを持つことができますが、特定の値(文字列、数値、BLOB、W/E)しか指定できません。
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- DATABASE -->
<xs:element name="database">
<xs:complexType>
<xs:choice>
<!-- TABLE-->
<xs:element name="table" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:choice>
<!-- FIELD -->
<xs:element name="field" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="pk" type="xs:boolean"/>
<xs:attribute name="fk" type="xs:string"/>
<xs:attribute name="unique" type="xs:boolean"/>
<xs:attribute name="index" type="xs:boolean"/>
<xs:attribute name="indentity" type="xs:boolean"/>
<xs:attribute name="maxSize" type="xs:long"/>
</xs:complexType>
</xs:element>
<!-- END FIELD -->
</xs:choice>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<!-- END TABLE -->
</xs:choice>
<xs:attribute name="version" type="xs:double" use="required"/>
</xs:complexType>
</xs:element>
<!-- END DATABASE -->
</xs:schema>
indexeddbのみを使用しても安全だと思いますか?また、indexeddbをまだサポートしていないデバイス用のweb sqlもオフラインソリューションに含めるべきですか? – anonymous