123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- .. _relations:
- Relations
- =========
- phpMyAdmin allows relationships (similar to foreign keys) using MySQL-native
- (InnoDB) methods when available and falling back on special phpMyAdmin-only
- features when needed. There are two ways of editing these relations, with the
- *relation view* and the drag-and-drop *designer* -- both of which are explained
- on this page.
- .. note::
- You need to have configured the :ref:`linked-tables` for using phpMyAdmin
- only relations.
- Technical info
- --------------
- Currently the only MySQL table type that natively supports relationships is
- InnoDB. When using an InnoDB table, phpMyAdmin will create real InnoDB
- relations which will be enforced by MySQL no matter which application accesses
- the database. In the case of any other table type, phpMyAdmin enforces the
- relations internally and those relations are not applied to any other
- application.
- Relation view
- -------------
- In order to get it working, you first have to properly create the
- [[pmadb|pmadb]]. Once that is setup, select a table's "Structure" page. Below
- the table definition, a link called "Relation view" is shown. If you click that
- link, a page will be shown that offers you to create a link to another table
- for any (most) fields. Only PRIMARY KEYS are shown there, so if the field you
- are referring to is not shown, you most likely are doing something wrong. The
- drop-down at the bottom is the field which will be used as the name for a
- record.
- Relation view example
- +++++++++++++++++++++
- .. image:: images/pma-relations-relation-view-link.png
- .. image:: images/pma-relations-relation-link.png
- Let's say you have categories and links and one category can contain several links. Your table structure would be something like this:
- - `category.category_id` (must be unique)
- - `category.name`
- - `link.link_id`
- - `link.category_id`
- - `link.uri`.
- Open the relation view (below the table structure) page for the `link` table and for `category_id` field, you select `category.category_id` as master record.
- If you now browse the link table, the `category_id` field will be a clickable hyperlink to the proper category record. But all you see is just the `category_id`, not the name of the category.
- .. image:: images/pma-relations-relation-name.png
- To fix this, open the relation view of the `category` table and in the drop down at the bottom, select "name". If you now browse the link table again and hover the mouse over the `category_id` hyperlink, the value from the related category will be shown as tooltip.
- .. image:: images/pma-relations-links.png
- Designer
- --------
- The Designer feature is a graphical way of creating, editing, and displaying
- phpMyAdmin relations. These relations are compatible with those created in
- phpMyAdmin's relation view.
- To use this feature, you need a properly configured :ref:`linked-tables` and
- must have the :config:option:`$cfg['Servers'][$i]['table_coords']` configured.
- To use the designer, select a database's structure page, then look for the
- :guilabel:`Designer` tab.
- To export the view into PDF, you have to create PDF pages first. The Designer
- creates the layout, how the tables shall be displayed. To finally export the
- view, you have to create this with a PDF page and select your layout, which you
- have created with the designer.
- .. seealso::
- :ref:`faqpdf`
|