diff --git a/Sda1/Etest/XmlSchema2RdbmsSchema/address.xsd b/Sda1/Etest/XmlSchema2RdbmsSchema/address.xsd new file mode 100644 index 0000000000000000000000000000000000000000..27b2eb10f39154a7c88367f567ec8a2ba7a84197 --- /dev/null +++ b/Sda1/Etest/XmlSchema2RdbmsSchema/address.xsd @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" + vc:minVersion="1.1" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"> + + <xs:simpleType name="personCategory"> + <xs:restriction base="xs:string"> + <xs:enumeration value="friend" /> + <xs:enumeration value="customer" /> + <xs:enumeration value="colleague" /> + </xs:restriction> + </xs:simpleType> + + + <xs:element name="addressbook"> + <xs:complexType> + <xs:sequence> + <xs:element ref="person" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:key name="uniquePersonId"> + <xs:selector xpath="person"/> + <xs:field xpath="@id"/> + </xs:key> + </xs:element> + + <xs:element name="person"> + <xs:complexType> + <xs:sequence> + <xs:element name="fullName" type="xs:string"/> + <xs:element name="birth" type="xs:date"/> + <xs:element name="category" type="personCategory"/> + + <xs:sequence> + <xs:element ref="address" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:sequence> + <xs:attribute name="id" type="xs:int"/> + </xs:complexType> + </xs:element> + + <xs:element name="address"> + <xs:complexType> + <xs:sequence> + <xs:element name="street" type="xs:string"/> + <xs:element name="number" type="xs:string"/> + <xs:element name="town" type="xs:string"/> + <xs:element name="zip" type="xs:string"/> + </xs:sequence> + </xs:complexType> + </xs:element> + +</xs:schema> diff --git a/Sda1/Etest/XmlSchema2RdbmsSchema/sampleData.xml b/Sda1/Etest/XmlSchema2RdbmsSchema/sampleData.xml new file mode 100644 index 0000000000000000000000000000000000000000..61b2243cdf4d9968bc337e2aa0bb38556858a578 --- /dev/null +++ b/Sda1/Etest/XmlSchema2RdbmsSchema/sampleData.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<addressbook xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="address.xsd"> + + <person id="23"> + <fullName>Eve Gardener</fullName> + <birth>1982-10-26</birth> + <category>friend</category> + <address> + <street>Honkytong Ave</street> + <number>23</number> + <town>Tuxamoon</town> + <zip>12345</zip> + </address> + </person> + + <person id="24"> + <fullName>Eve Gardener</fullName> + <birth>1982-10-26</birth> + <category>customer</category> + </person> + +</addressbook> \ No newline at end of file diff --git a/Sda1/Etest/XmlSchema2RdbmsSchema/schema.sql b/Sda1/Etest/XmlSchema2RdbmsSchema/schema.sql new file mode 100644 index 0000000000000000000000000000000000000000..5f0c1dc1eaafe5546a24db8070d764499b2300a7 --- /dev/null +++ b/Sda1/Etest/XmlSchema2RdbmsSchema/schema.sql @@ -0,0 +1,24 @@ +DROP TABLE Address; +DROP TABLE Person; + +CREATE TABLE Person ( + id INTEGER NOT NULL PRIMARY KEY + ,fullName VARCHAR(20) NOT NULL + ,birth DATE + ,category CHAR(12) + ,CHECK (category IN ('friend', 'customer', 'colleague')) +); + +CREATE TABLE Address ( + person INTEGER NOT NULL PRIMARY KEY REFERENCES Person + ON DELETE CASCADE + ON UPDATE CASCADE + + ,street VARCHAR(255) NOT NULL + ,number VARCHAR(255) NOT NULL + ,town VARCHAR(255) NOT NULL + ,zip CHAR(7) NOT NULL +); + + + diff --git a/Sda2/Ref/Fig/jpacache.svg b/Sda2/Ref/Fig/jpacache.svg index 4104f95209c7dcd5ae243dc8e07db38e01c24444..8ecaf808af2105905105744a4a14ae3c15731506 100644 --- a/Sda2/Ref/Fig/jpacache.svg +++ b/Sda2/Ref/Fig/jpacache.svg @@ -583,7 +583,7 @@ transform="translate(120,130)"> <path transform="translate(12.790299,-56.427792)" - d="m 710,454.09448 a 85,30 0 1 1 -170,0 85,30 0 1 1 170,0 z" + d="m 710,454.09448 c 0,16.56854 -38.0558,30 -85,30 -46.9442,0 -85,-13.43146 -85,-30 0,-16.56854 38.0558,-30 85,-30 46.9442,0 85,13.43146 85,30 z" sodipodi:ry="30" sodipodi:rx="85" sodipodi:cy="454.09448" @@ -593,7 +593,7 @@ sodipodi:type="arc" /> <path transform="translate(11.943107,58.992702)" - d="m 710,454.09448 a 85,30 0 1 1 -170,0 85,30 0 1 1 170,0 z" + d="m 710,454.09448 c 0,16.56854 -38.0558,30 -85,30 -46.9442,0 -85,-13.43146 -85,-30 0,-16.56854 38.0558,-30 85,-30 46.9442,0 85,13.43146 85,30 z" sodipodi:ry="30" sodipodi:rx="85" sodipodi:cy="454.09448" @@ -1428,7 +1428,7 @@ sodipodi:open="true" sodipodi:end="6.2802964" sodipodi:start="0" - d="m 590,229.09448 a 85,55 0 1 1 -3.5e-4,-0.15889" + d="m 590,229.09448 c 0,30.37566 -38.0558,55 -85,55 -46.9442,0 -85,-24.62434 -85,-55 0,-30.37566 38.0558,-55 85,-55 46.84834,0 84.8643,24.52761 84.99965,54.84111" sodipodi:ry="55" sodipodi:rx="85" sodipodi:cy="229.09448" @@ -1828,7 +1828,7 @@ sodipodi:role="line" x="20" y="334.09448" - id="tspan3343"> </tspan><tspan + id="tspan3343" /><tspan sodipodi:role="line" x="20" y="364.09448" @@ -2002,7 +2002,12 @@ id="text4862" sodipodi:linespacing="125%"><tspan sodipodi:role="line" - id="tspan4864"></tspan></text> + id="tspan4864" /></text> + <path + style="color:#000000;fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 480,124.09448 560,0" + id="path3343" + inkscape:connector-curvature="0" /> </g> <g inkscape:groupmode="layer"