<?xml version="1.0" encoding="UTF-8"?>
<helpdocument version="1.0">
	
<!--***********************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 ***********************************************************-->


 
	
<meta>
<topic id="textsharedexplorerdatabase05020000xml" indexer="include">
<title id="tit" xml-lang="en-US">Relations</title>
<filename>/text/shared/explorer/database/05020000.xhp</filename>
</topic>
</meta>
<body>
<section id="relationen">
<bookmark xml-lang="en-US" branch="hid/DBACCESS_HID_CTL_RELATIONTAB" id="bm_id3153345" localize="false"/>
<paragraph role="heading" id="hd_id3153323" xml-lang="en-US" level="1" l10n="U" oldref="1"><link href="text/shared/explorer/database/05020000.xhp" name="Relations">Relations</link></paragraph>
<bookmark xml-lang="en-US" branch="index" id="bm_id3146957"><bookmark_value>relational databases (Base)</bookmark_value>
</bookmark><comment>mw added "(Base)"</comment>
<paragraph role="paragraph" id="par_id3146957" xml-lang="en-US" l10n="U" oldref="2">This command opens the <emph>Relation Design </emph>window, which allows you to define relationships between various database tables.</paragraph>
</section>
<paragraph role="paragraph" id="par_id3154823" xml-lang="en-US" l10n="CHG" oldref="19"><ahelp hid="HID_CTL_RELATIONTAB">Here you can link together tables from the current database through common data fields.</ahelp> Click the <emph>New Relation</emph> icon to create the relationships, or simply drag-and-drop with the mouse.</paragraph>
<section id="howtoget">
<embed href="text/shared/00/00000450.xhp#relationen"/>
</section>
<paragraph role="note" id="par_id3145316" xml-lang="en-US" l10n="U" oldref="3">This function is only available if you are working with a relational database.</paragraph>
<paragraph role="paragraph" id="par_id3149235" xml-lang="en-US" l10n="CHG" oldref="4">When you choose <emph>Tools - Relationships</emph>, a window opens in which all the existing relationships between the tables of the current database are shown. If no relationships have been defined, or if you want to relate other tables of the database to each other, then click the <emph>Add Tables</emph> icon. The <link href="text/shared/02/14020100.xhp" name="Add Tables">Add Tables</link> dialog opens in which you can select the tables that you want.</paragraph>
<embed href="text/shared/00/00000450.xhp#sytabelle"/>
<paragraph role="note" id="par_id3152812" xml-lang="en-US" l10n="U" oldref="17">If the <emph>Relation Design</emph> window is open, the selected tables cannot be modified, even in Table Design mode. This ensures that tables are not changed while the relations are being created.</paragraph>
<paragraph role="paragraph" id="par_id3150541" xml-lang="en-US" l10n="U" oldref="5">The selected tables are shown in the top area of the design view. You can close a table window through the context menu or with the Delete key.</paragraph>
<embed href="text/shared/explorer/database/02010100.xhp#darstellungaendern"/>
<bookmark xml-lang="en-US" branch="index" id="bm_id3148922"><bookmark_value>primary keys;inserting (Base)</bookmark_value>
<bookmark_value>keys;primary keys (Base)</bookmark_value>
<bookmark_value>external keys (Base)</bookmark_value>
</bookmark><comment>mw added "(Base)" to all entries</comment>
<paragraph role="heading" id="hd_id3148922" xml-lang="en-US" level="2" l10n="U" oldref="6">Primary key and other key</paragraph>
<paragraph role="paragraph" id="par_id3149168" xml-lang="en-US" l10n="U" oldref="7">If you want to define a relation among the different tables, you should enter a <link href="text/shared/00/00000005.xhp#primaerschluessel" name="primary key">primary key</link> that clearly identifies a data field of the existing table. You can refer to the primary key from other tables to access the data of this table. All data fields referring to this primary key will be identified as an external key.</paragraph>
<paragraph role="paragraph" id="par_id3147085" xml-lang="en-US" l10n="U" oldref="8">All data fields referring to a primary key will be identified in the table window by a small key symbol.</paragraph>
<paragraph role="heading" id="hd_id3153193" xml-lang="en-US" level="2" l10n="U" oldref="12">Define relations</paragraph>
<bookmark xml-lang="en-US" branch="index" id="bm_id3155430"><bookmark_value>relations; creating and deleting (Base)</bookmark_value>
</bookmark><comment>mw added "(Base)"</comment>
<paragraph role="paragraph" id="par_id3155430" xml-lang="en-US" l10n="U" oldref="13">All existing relations are shown in the relations windows by a line that connects the primary and other key fields. You can add a relation by using drag-and-drop to drop the field of one table onto the field of the other table. A relation is removed again by selecting it and pressing the Delete key.</paragraph>
<paragraph role="paragraph" id="par_id3149984" xml-lang="en-US" l10n="U" oldref="18">Alternatively, you can also click the <emph>New Relation</emph> icon in the top area of the relation field and define the relation between two tables in the <link href="text/shared/explorer/database/05020100.xhp" name="Relations"><emph>Relations</emph></link> dialog.</paragraph>
<embed href="text/shared/00/00000450.xhp#SyRelationen"/>
<paragraph role="warning" id="par_id3153093" xml-lang="en-US" l10n="U" oldref="14">If you use $[officename] as the front-end for a relational database, the creation and deletion of relationships is not placed in an intermediate memory by $[officename], but is forwarded directly to the external database.</paragraph>
<paragraph role="paragraph" id="par_id3155856" xml-lang="en-US" l10n="U" oldref="15">By double-clicking a connection line, you can assign certain properties to the relation. The <emph>Relations </emph>dialog opens.</paragraph>
</body>
</helpdocument>
