2012-04-26 8 views
0

私は、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> 

答えて

1

IndexedDBは、リレーショナルではなくドキュメント指向の(実際にはオブジェクト指向の)ストアです。 IndexedDBにmany-to-many relationshipsを実装することは可能ですが、それは当然のことではありません。

私はすべてのWebストレージを単純なXMLスキーマに単純化することは素晴らしいと思うが、それは信じられないほど表現力があるとは思わない。

+0

indexeddbのみを使用しても安全だと思いますか?また、indexeddbをまだサポートしていないデバイス用のweb sqlもオフラインソリューションに含めるべきですか? – anonymous