This page is for application designers who want define the data that will back the application. It explains how to draw an ERD and setup its properties.
Overview
Use an ERD to define the structure of the data that backs your application. For an introduction to ERD concepts and why ERDs are important, see Understanding ERDs.
Think about the structure here Make it easier to track through. We need to be mindful "if you've got data"
Bring in an excel file creates the data structure (creates the table) but that's no the same as running analysis and then loading the data (analysis pulls in the records)
The things you need to consider when defining an ERD depend on whether or not you have already loaded data into PhixFlow. It feels like we are jumping into the middle here a little. How to define an ERD for me feels more of a natural starting point happy to discuss.
- Make sure people are clear that PhixFlow can make this is you already have something
- You have got data
- You've got data NOT in PhixFlow
- bring it in via a model
- OR if its in Excel you can bring it in and create the model in 1 step
- You've got data in PhixFlow (via model)
If you have already loaded data (link to analysis model) (both table and records), the tables are listed in the repository. I feel there is a clash here against the statement earlier "it has not been loaded yet" as we can load a file without pulling data into PhixFlow. This then sets up the table structure for us.- Drag tables from the repository Data → Tables into the ERD canvas. Again we want to avoid the respository we have the show tables option on an ERD.
- Set the primary key:
- Either create an attribute called UID that PhixFlow will populate with unique values for each record
- Or select an attribute to be the primary key. You will need to ensure this contains unique values.
- If you add an excel file we have discussed presenting users with the option to select a Primary Key and Display Name. There is a flow that covers this see 4.10.
- Add relationships
- Should we state that users need to drag and drop to create a relationship? Dragging and dropping onto an attribute creates the relationship. Dragging and dropping onto the header bar creates the corresponding attribute and relationship.
- Primary key and foreign key attributes must have the same data Type.
- If you do not have any data for your application:
- Create tables, attributes and relationships in the ERD.
- New tables have an attribute called UID, which is the primary key. We also create a Name attribute that is set to Display Name
- Make sure the data Type is correct for the data that will populate each attribute. we haven't introduced the concept of creating attributes at this point, should we discuss setting a value?
- PhixFlow adds table items to the repository. Attributes are listed within the Table properties. Should we say this as we are trying to avoid people browsing the repository, and we have the view table button on the in context menu.
- Relationships are not listed in the repository. To see relationship properties, in the ERD, click the relationship arrow. should we go with the positive view point and say relationship details are only available on the ERD?
- Add records to your tables:
- either manually e.g. create a screen to allow users to enter data.
- or from an external source, e.g. Excel file, database etc. we need to consider what to tell people, as excel can be added directly but databases et al need an analysis model to back them. lets discuss our message. Also we say add records from an external source and have no information about that?
- Create tables, attributes and relationships in the ERD.
- If you have already loaded data, the tables are listed in the repository. I feel there is a clash here against the statement earlier "it has not been loaded yet" as we can load a file without pulling data into PhixFlow. This then sets up the table structure for us.
- Drag tables from the repository Data → Tables into the ERD canvas. Again we want to avoid the respository we have the show tables option on an ERD.
- Set the primary key:
- Either create an attribute called UID that PhixFlow will populate with unique values for each record
- Or select an attribute to be the primary key. You will need to ensure this contains unique values.
- If you add an excel file we have discussed presenting users with the option to select a Primary Key and Display Name. There is a flow that covers this see 4.10.
- Add relationships
- Should we state that users need to drag and drop to create a relationship? Dragging and dropping onto an attribute creates the relationship. Dragging and dropping onto the header bar creates the corresponding attribute and relationship.
- Primary key and foreign key attributes must have the same data Type.
Panel | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
|
How to Define an ERD
Open an Existing ERD
Create a New ERD
Tip |
---|
When you are creating tables, choose a name that reflects the entity your table represents. Move to creationShould this be on the defining data structures page as we do not cover creation here? |
PhixFlow opens a new ERD canvas on the left with a toolbar at the top. Hover your mouse pointer over toolbar icons to display a tooltip.
Add an Existing Table
- In the toolbar, click Table ListThe icon is called tables and the icon here is wrong as it includes the category name. Review the context menus for full details and please take the icons from the Icon repository directory on sharepoint.
- PhixFlow filters the repository to show the list of tables available in this application.
- Drag a table from the repository onto the ERD canvas.
Create a New Table
- UID - the unique identifier and primary key.
- Name - (which also gets auto added and set as the display name - concept to explain)
PhixFlow creates attributes with a Type or String and Length of 50 characters. Remember to select appropriate type properties for an attributes data, such as Date or Integer.
What is meant by "adding corners"? I don't recognise this term at all. This is to do angle points, can we make the terminology consistent here. Also if you drag a table onto an ERD does it save automatically. We need to confirm this as I would not expect it to as the same does not happen in analysis models.
Create Relationships
In an ERD you can create a one-to-many relationship between a primary key in one table with an attribute in another table. For relationship concepts, see Understanding ERDs.
To create a relationship, click-drag from one attribute to another. It's not any attribute to any attribute. We need to add a note that dragging a UID onto a header will auto create a foreign key.
Expand | ||
---|---|---|
| ||
|
Rearranging ERDs
To move tables around in the ERD, click on the header and drag the table. There are also Align options in the toolbar that you can use to line up or distribute selected tables.
To select multiple tables, draw a square around them.
If you want to highlight the relationships that affect a table, click the table to select it. The following screenshot shows the Teacher table is selected.
- Blue lines indicate relationships to a foreign key in the selected table
- Green lines indicate relationships from the primary key in the selected table.
- Should we add the concept of 1:many and many:1 here?
If a table has a lot of attributes that you do not need to see you can collapse the list to show only the table's primary and foreign keys.
- either right-click on a table and select Hide attributes or Show attributes
- or double-click on the table header.
Properties
Basic Settings
The name for the ERD.
How PhixFlow Manages Different Relationship Drags
Foreign key type
If PhixFlow does any automatic changing of types, then record them here
table1.primarykey → table2.attribute
one → many
Table has no records:
Table has records: 21052021 PhixFlow creates relationships with types that don't match
table2.primarykey → table1.attribute
one → many
one → one
if table1 has no primary key: PhixFlow makes the table1.attribute the primary key
if table 1 has a primary key: relationship is from table1.primarykey instead of from table1.attribute.Starting Point | Process | Primary Key | See | |||||||
---|---|---|---|---|---|---|---|---|---|---|
I have no data | Define the tables, attributes and their relationships in the ERD. Later you will need to add records to the tables:
| PhixFlow automatically creates each table with:
| Defining Data Structures using ERDs | |||||||
I have data in Excel files | Drag the Excel files directly into an ERD. PhixFlow loads the data structure and records. It then adds the table to the ERD. In the ERD, you then add the relationships between tables. | PhixFlow prompts you to set the primary key and display name attributes. | ??Link to doc on XD flow 4.10 | |||||||
I have data but it's not in PhixFlow | Use an analysis model to connect to your data. PhixFlow can read the data structures to create tables. When you run analysis on the model, PhixFlow loads the data records. | In each table
| Load Data | |||||||
I have tables in PhixFlow already | In the ERD toolbar, click the
| Defining Data Structures using ERDs |
Note | ||||||||
---|---|---|---|---|---|---|---|---|
|
How to Define an ERD
Open an Existing ERD
- From the home menu, select Data and click on an ERD in the list.
- In the repository, open your application and find Data → ERD.
- either right-click on an ERD name and select Display.
- or double-click the ERD name to open the properties. In the properties toolbar, click the
icon.Insert excerpt _erd _erd nopanel true
Create a New ERD
- From the home menu, select Data.
- PhixFlow displays the list of ERDs. Select Create New from the left hand side.
In the pop-up, enter a name for your ERD, and a description then click
.Insert excerpt _dialog_finish _dialog_finish nopanel true Tip When you are creating tables, choose a name that reflects the entity your table represents. Move to creationShould this be on the defining data structures page as we do not cover creation here?
PhixFlow opens a new ERD canvas on the left with a toolbar at the top. Hover your mouse pointer over toolbar icons to display a tooltip.
Create a Table From an Excel File
todo?? Flow 4.10
Add an Existing Table
- In the toolbar, click Table ListWaiting for qualified icon??
- PhixFlow filters the repository to show the list of tables available in this application.
- Drag a table from the repository onto the ERD canvas.
Create a New Table
- Drag Table Create from the toolbar into the diagram. Waiting for qualified icon??
- In the pop-up, enter a name, for example "Customer" and click
.Insert excerpt _dialog_finish _dialog_finish nopanel true - PhixFlow adds the table to the canvas and opens its properties tab on the right. The header displays the name entered in step 2. PhixFlow automatically adds 2 attributes:
- UID - the unique identifier and primary key.
- Name - Figure out how to explain what the name attribute is for and how it's needed for the display name???
- To add attributes to the table:
- In the table, click
. PhixFlow opens the attribute properties on the right.Insert excerpt _new _new nopanel true - In the properties, enter the Name, Type and Length for the data; see Attributes.
PhixFlow creates attributes with a Type or String and Length of 50 characters. Remember to select appropriate type properties for an attributes data, such as Date or Integer.
the attribute properties.Insert excerpt _dialog_finish _dialog_finish nopanel true
- In the table, click
- PhixFlow adds the attribute to the table in the ERD.
Create Relationships
In an ERD you can create a one-to-many relationship between a primary key in one table with an attribute in another table. For relationship concepts, see Understanding ERDs.
To create a relationship, click-drag from one attribute to another.
Expand | ||
---|---|---|
| ||
|
There are restrictions about which attributes can be connected.
Primary key and foreign key attributes must have the same data Type.
To see relationship properties, in the ERD, click the relationship arrow.
How PhixFlow Manages Different Relationship Drags
Drag | Relationship line | Foreign key type If PhixFlow does any automatic changing of types, then record them here | |
---|---|---|---|
From table1 | To table2 | ||
primary key | attribute | table1.primarykey → table2.attribute | Table has no records: 16062021 PhixFlow creates relationships with types that don't match and does not change the types Table has records: 21052021 PhixFlow creates relationships with types that don't match |
attribute | primary key | table2.primarykey → table1.attribute | |
primary key | primary key | table1.primarykey → table2.primarykey 1:1 | 21052021 should this work? No |
primary key | table header | table1.primarykey → table2.new-attribute 1:many | 16062021 currently does not work. I cannot drop onto a header. |
attribute | attribute | if table1 has no primary key: PhixFlow makes the table1.attribute the primary key if table 1 has a primary key: the relationship is from table1.primarykey instead of from table1.attribute. | 16062021 PhixFlow creates relationships with types that don't match and does not change the types |
Saving ERDs
Changes to tables, attributes and relationships are automatically saved to the ERD. However, you must click
Insert excerpt | ||||||
---|---|---|---|---|---|---|
|
Rearranging ERDs
To move tables around in the ERD, click on the header and drag the table. There are also Align options in the toolbar that you can use to line up or distribute selected tables.
To select multiple tables, draw a square around them. ??show in animated gif
If you want to highlight the relationships that affect a table, click the table to select it. The following screenshot shows the Teacher table is selected.
- Blue lines indicate relationships to a foreign key in the selected table
- Green lines indicate relationships from the primary key in the selected table.
If a table has a lot of attributes that you do not need to see you can collapse the list to show only the table's primary and foreign keys.
- either right-click on a table and select Hide attributes or Show attributes
- or double-click on the table header.
Properties
Insert excerpt | ||||||
---|---|---|---|---|---|---|
|
Basic Settings
Field | Description |
---|---|
Name | The name for the ERD. |
Insert excerpt | ||||||
---|---|---|---|---|---|---|
|
Insert excerpt | ||||||
---|---|---|---|---|---|---|
|
ERD Toolbar we haven't defined this in our terminology document but we have been calling it the In Context Toolbar to ensure there is no ambiguity with any other options.
The toolbar is at the top of the canvas. Hover your mouse pointer over the toolbar to see a tooltip.
Option | Description |
---|---|
Create | |
Create | Drag this icon onto the canvas to create a table. |
Screen | Creates a new screen for the selected table. |
List | |
Tables | Click to see a list available tables. |
Screens | Click to see a list available screens. |
Canvas | |
Save | Save changes to the diagram. If there is no save icon, PhixFlow is saving changes automatically. |
Refresh | Redraw the ERD to display recent changes to the diagram. |
Properties | Open the properties for the current diagram. |
Zoom out | Zoom out to see more of the diagram, with smaller text. |
Zoom in | Zoom in to see a smaller area of the diagram, with larger text. |
Ungroup | Select a grouped set of items and then click to ungroup them. Select several items then click to group them together. |
Group | Select several items then click to group them together. |
Back | For screen layout, move a component back. |
Forward | For screen layout, bring a component forward. |
Align options | Click/hover to show all the options for aligning items on the canvas. |
Align Grid | Organise selected items into a grid pattern. |
Align left | Align selected items to the left. |
Align right | Align selected items to the right. |
Align top | Align selected objects to the top. |
Align bottom | Align selected objects to the bottom. |
Distribute horizontally | For 3 or more items, distributes the selected items evenly between the left and right items. |
Distribute vertically | For 3 or more items, distributes the selected items evenly between the top and bottom items. |
Table Pop-up Menu
You can access more options in a pop-up menu:
- in the table header, click
Insert excerpt _more_options_erd _more_options_erd nopanel true - right-click anywhere in the table.
Option | Rename to | Description |
---|---|---|
Configure Table | Table properties | Open the properties for this table. |
Remove this item from the Diagram | Remove from ERD | Remove the selected item(s) from the diagram. |
Hide Attributes | Hide attributes | Collapse the table so that it only shows the table name, primary key and any foreign keys. Other attributes are hidden. |
Show Attributes | Show attributes | Expand the table to show all the attributes |
Parmanently Delete | Delete everywhere | DDelete the selected item(s) from the ERD and from everywhere it is used. |